在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 (sklearn),如何处理线性回归的缺失数据?