在scikit learn中,如何处理数值和标称值混合的数据?

Posted

技术标签:

【中文标题】在scikit learn中,如何处理数值和标称值混合的数据?【英文标题】:In scikit learn, how to deal with the data mixed with numerical and nominal value? 【发布时间】:2012-07-26 07:35:51 【问题描述】:

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

这个包如何处理混合数据(数值和标称值)?

例如,产品可能具有“颜色”和“价格”属性,其中颜色是标称的,价格是数字的。我注意到有一个名为“DictVectorizer”的模型来计算名义数据。例如,两种产品是:

products = ['color':'black','price':10, 'color':'green','price':5]

'DictVectorizer' 的结果可能是:

[[1,0,10],
 [0,1,5]]

如果属性“颜色”有很多不同的值,则矩阵将非常稀疏。而长特征会降低一些算法的性能,比如决策树。

有什么方法可以使用标称值而不需要创建伪代码?

【问题讨论】:

值得注意的是,Weka Instances 将标称值存储为与属性定义中标称索引相对应的浮点数。您可以简单地按照相同的策略生成用于 scikit-learn 的数字数据集。 非常感谢您扩展我的知识。 【参考方案1】:

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

AFAIK 还没有人在做这件事。

【讨论】:

非常感谢。在scikit中,有没有比手工操作更聪明的重构方式? 我的回答指出,这种当前状态是对 scikit-learn 中决策树当前实现的限制。我知道没有简单的解决方法可以消除该限制。我不明白你所说的“手动操作”。

以上是关于在scikit learn中,如何处理数值和标称值混合的数据?的主要内容,如果未能解决你的问题,请参考以下文章

Scikit-Learn:如何处理不可排序的类型错误?

使用 scikit-learn (sklearn),如何处理线性回归的缺失数据?

scikit-learn 估算另一个特征中标称值组内特征的平均值

Vigenere密码,如何处理超出字符值范围的序数值

Keras 如何处理多标签分类?

scikit-learn 可以处理多少功能?