我的数据看起来像这样:
20003.0, 20003.1, 20004.0, 20004.1, 34
1, 2, 3, 4, 5
其中带有。*的列是多项选择,它们所采用的值是分类。
理想情况下,我可以将[{'20003': ['1', '2'], '20004': ['3', '4'], '34': 5}]
传递给DictVectorizer
,但目前尚不支持。
如何加载这些数据以创建稀疏特征向量?
答案 0 :(得分:0)
如果您可以总结相同列组的值:
In [63]: df
Out[63]:
20003.0 20003.1 20004.0 20004.1 34
0 1 2 3 4 5
In [64]: d = df.groupby(df.columns.str.split('.').str[0], axis=1).sum().to_dict('r')
In [65]: d
Out[65]: [{'20003': 3, '20004': 7, '34': 5}]
In [66]: from sklearn.feature_extraction import DictVectorizer
In [67]: v = DictVectorizer()
In [68]: X = v.fit_transform(d)
In [69]: X.toarray()
Out[69]: array([[ 3., 7., 5.]])
In [70]: v.inverse_transform(X)
Out[70]: [{'20003': 3.0, '20004': 7.0, '34': 5.0}]
说明:
In [71]: df.groupby(df.columns.str.split('.').str[0], axis=1).sum()
Out[71]:
20003 20004 34
0 3 7 5
In [72]: df.groupby(df.columns.str.split('.').str[0], axis=1).sum().to_dict('r')
Out[72]: [{'20003': 3, '20004': 7, '34': 5}]