在scikit学习中,如何处理混合了数值和名义价值的数据?

xue*_*liu 12 python mixed machine-learning data-mining scikit-learn

我知道scikit-learn中的计算是基于NumPy所以一切都是矩阵或数组.

该包如何处理混合数据(数值和名义值)?

例如,产品可以具有属性"颜色"和"价格",其中颜色是名义上的,价格是数字.我注意到有一个名为'DictVectorizer'的模型来计算名义数据.例如,两个产品是:

products = [{'color':'black','price':10}, {'color':'green','price':5}]
Run Code Online (Sandbox Code Playgroud)

而'DictVectorizer'的结果可能是:

[[1,0,10],
 [0,1,5]]
Run Code Online (Sandbox Code Playgroud)

如果属性'color'有许多不同的值,则矩阵将非常稀疏.长特征会降低某些算法的性能,例如决策树.

有没有办法使用标称值而无需创建虚拟代码?

ogr*_*sel 6

scikit-learn中的DecisionTree类需要进行一些重构才能有效地处理高基数的分类特征(甚至可能使用自然稀疏的数据,如文本TF-IDF向量).

AFAIK还没有人在研究它.