在Python上的R中执行分类,其中每个数据帧都被标记



我的问题是,我没有让数据帧中的每一行都对应于一个标签,而是有多个数据帧,每个数据帧都有相同的列和行数,但每个数据帧的标签都是l1、l2或l3。您需要数据框中的所有数据才能确定标签。

例如,假设我有这个数据帧,它被标记为l1,想象我有多个被标记为l2或l3。我需要创建一个分类模型,这样当我有一个像这样的新数据帧时,它就可以对它进行分类


Time    Measure1  Measure2      
1         10       1000  
2         12       1245  
3         20       1837  
4         18       1837  

这是如何用R或Python构建的?

我希望这是清楚的!

您有正确的想法:为了使分类模型发挥作用,您需要在生成的数据帧的单行中拥有单个样本的数据。您的示例中有某种交叉表,但您需要的是平面表。幸运的是,有了panda,您可以使用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

结果是具有MultiIndex的pd.Series(=单列(。然后,您可以将标签添加到测量中,并将所有数据连接到单个数据帧中。

>>> 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

最新更新