2017-04-13 194 views
0

我有一个看起来像这样的数据:与结局sklearn:创建选择题稀疏特征向量特征

20003.0, 20003.1, 20004.0, 20004.1, 34 
1, 2, 3, 4, 5 

其中列*都是选择题,他们采取分类是价值观。

理想情况下,我将能够通过[{'20003': ['1', '2'], '20004': ['3', '4'], '34': 5}]DictVectorizer但尚不支持。

如何把这个数据加载到创建稀疏特征向量?

+0

你是什么数据?它是文本,DataFrame,数组,还有其他的东西吗? – MaxU

+0

这是从CSV读取的数据帧。 – cosmosa

+0

可以总结值类似列?例如:'[{'20003':3,'20004':7,'34':5}]' - 这可以很容易地传递给DictVectorizer – MaxU

回答

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}] 
+0

不幸的是,我不能总结这些值。可能不清楚的是它们是绝对的。 – cosmosa