Scikit learn sklearn:从多项选择特征创建稀疏特征向量
我有如下数据:Scikit learn sklearn:从多项选择特征创建稀疏特征向量,scikit-learn,Scikit Learn,我有如下数据: 20003.0, 20003.1, 20004.0, 20004.1, 34 1, 2, 3, 4, 5 其中以*结尾的列是多选项,它们采用的值是分类的 理想情况下,我将能够将[{'20003':['1','2','20004':['3','4'],'34':5}]传递给DictVectorizer,但这还不受支持 如何加载此数据以创建稀疏特征向量?如果可以对相同列组的值进行汇总: In [63]: df Out[63]: 20003.0 20003.1 20004.
20003.0, 20003.1, 20004.0, 20004.1, 34
1, 2, 3, 4, 5
其中以*结尾的列是多选项,它们采用的值是分类的
理想情况下,我将能够将[{'20003':['1','2','20004':['3','4'],'34':5}]
传递给DictVectorizer
,但这还不受支持
如何加载此数据以创建稀疏特征向量?如果可以对相同列组的值进行汇总:
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}]
你的数据是什么?它是文本、数据框、数组还是其他?它是从CSV读取的数据框。您能将类似列中的值相加吗?例如:
[{'20003':3,'20004':7,'34':5}]
-这可以很容易地传递给dictvectorier。不幸的是,我无法对这些值求和。可能不清楚的是,它们是绝对的。