我有点好奇sklearn是如何处理由数字表示的范畴变量的,比如New York=1 Boston=2 Chicago=3。python会知道它是分类的还是只是把它当作有序的数字?我看到一篇关于这个问题的帖子。我不知道它是否正确。在
我也不知道是否应该将它们全部转换为稀疏矩阵格式,例如
[1,0,0]
[0,1,0]
[0,0,1]
应用到sklearn库时,这两种格式有什么区别?在
如果sklearn不能很好地处理范畴变量,R会因此而击败它吗?在
谢谢!在
更新:
我看到了@larsmans推荐的复制问题,但实际上它没有回答我的问题,答案是in this post,它说sklearn不能很好地处理分类变量,它与R中的包相比如何。我之前也看到一些帖子,说它可以处理大数据集,但会影响小数据集。从@larsmans看来,除了树算法外,其他方法都应该将数值范畴变量转换为虚拟变量。实际上每个变量我有3000多个类别。我不认为使用DictVectorizer或oneHotEncoder将它们全部更改为稀疏矩阵不是一种有效的方法。在
看起来这就是你需要的DictVectorizer
用普通数表示多类分类变量可能不是一个好主意。最佳实践应该是将n类分类变量转换为n个布尔变量。在您的示例中,应该创建3个新的布尔变量来标记“==new York”、“==Boston”和“==Chicago”。在
输出:
^{pr2}$相关问题 更多 >
编程相关推荐