python - 在 Python 上的 R 中执行分类,其中每个数据帧都被标记
问题描述
我的问题是,我没有将数据框中的每一行都对应一个标签,而是有多个数据框,每个数据框都有相同的列和行数,但每个数据框都被标记为 l1、l2 或 l3。您需要数据框中的所有数据才能确定标签。
例如,假设我有这个数据框及其标记为 l1,并想象我有多个标记为 l1、l2 或 l3。我需要创建一个分类模型,所以当我有一个像这样的新数据框时,它可以对其进行分类。
Time Measure1 Measure2
1 10 1000
2 12 1245
3 20 1837
4 18 1837
这如何在 R 或 Python 中构建?
我希望这很清楚!
解决方案
您有正确的想法:要使分类模型起作用,您需要将单个样本的数据放在结果数据框的单行中。您在示例中拥有的是某种交叉表,但您需要的是平面表。幸运的是,使用 pandas,您可以使用以下方法轻松创建平面表unstack()
:
>>> df = pd.DataFrame([[1, 10, 1000], [2, 12, 1245], [3, 20, 1837], [4, 18, 1837]],
columns=['Time', 'Measure1', 'Measure2'])
>>> s = df.set_index('Time').unstack()
>>> s
Time
Measure1 1 10
2 12
3 20
4 18
Measure2 1 1000
2 1245
3 1837
4 1837
dtype: int64
结果是pd.Series
带有 MultiIndex 的(= 单列)。然后,您可以将标签添加到测量值并将所有数据连接到单个数据框中。
>>> s['label'] = 'l1'
>>> df = pd.concat([s,s,s], axis=1).T
>>> df
Measure1 Measure2 label
Time 1 2 3 4 1 2 3 4
0 10 12 20 18 1000 1245 1837 1837 l1
1 10 12 20 18 1000 1245 1837 1837 l1
2 10 12 20 18 1000 1245 1837 1837 l1
在列中使用 MultiIndex 有点笨拙,但您可以将它们替换为
>>> df.columns = ['_'.join(str(x) for x in c).strip('_') for c in df.columns]
>>> df
Measure1_1 Measure1_2 Measure1_3 ... Measure2_3 Measure2_4 label
0 10 12 20 ... 1837 1837 l1
1 10 12 20 ... 1837 1837 l1
2 10 12 20 ... 1837 1837 l1
推荐阅读
- javascript - 尝试将 onclick() 函数附加到按钮时,有哪些解决问题的技巧?
- vue.js - 导致构建错误的旧 Node_modules 文件夹
- php - 为什么 Doctrine 对存储库方法名称进行人为限制?
- c# - 使用 MS Access 小数分隔符逗号从 petapoco sql 请求中转换为双精度
- c# - 如何使用 IObservable
分割一个 IObservable 进入 IObservable 长短不一 - python - 迭代嵌套列表,通过向右而不是向下看与其他列表项进行比较
- excel - 如何使用当前时间和日期显示特定值?
- c# - 带有 Windows 身份验证的 ASP.NET Core 标识
- html - 根据输入的角度可变形式
- java - 我的 txt 文件和 FileInputStream 有错误