Python Scikit学习中的分类数据转换

Python Scikit学习中的分类数据转换,python,numpy,machine-learning,scikit-learn,Python,Numpy,Machine Learning,Scikit Learn,我有一个用于分类任务的4000万x 22 numpy整数数据数组。 大多数特征都是分类数据,使用不同的整数值表示不同的类别。例如,在“颜色”列中:0表示蓝色,1表示红色,依此类推。我已经用LabelEncoder对数据进行了预处理 将这些数据整合到SK learn的任何分类模型中有意义吗?我试图将数据拟合到随机森林模型中,但精度非常差。我还尝试了一种热编码将数据转换为虚拟变量,但我的计算机在使用一种热编码后只能处理稀疏矩阵,问题是随机林只能接受一个密集矩阵,这将超出我的计算机内存 SK lear

我有一个用于分类任务的4000万x 22 numpy整数数据数组。 大多数特征都是分类数据,使用不同的整数值表示不同的类别。例如,在“颜色”列中:0表示蓝色,1表示红色,依此类推。我已经用LabelEncoder对数据进行了预处理

  • 将这些数据整合到SK learn的任何分类模型中有意义吗?我试图将数据拟合到随机森林模型中,但精度非常差。我还尝试了一种热编码将数据转换为虚拟变量,但我的计算机在使用一种热编码后只能处理稀疏矩阵,问题是随机林只能接受一个密集矩阵,这将超出我的计算机内存
  • SK learn中处理分类数据的正确策略是什么

  • LabelEncoder
    在您的情况下是无用的,因为输出的数字作为数字没有任何意义(即,对它们执行算术运算是没有意义的)<代码>OneHotEncoder在处理分类数据时非常重要

    最近,sklearn在随机林和决策树中学习,因此您可能希望查看最新版本。此外,其他方法,如支持稀疏数据


    此外,我不认为你需要使用所有4000万个例子来获得一个像样的准确度。随机抽样就足够了,比如说,100k个(这个数字取决于OneHotEncoding后的功能数量、它们的可变性和目标类的数量)。

    在尝试处理4000万行数据之前,我会减少您的训练数据量,先找出哪些功能最有用。RandomForest有一个属性
    feature\u importances\u
    ,它将告诉您它认为最有用的功能:感谢您的帮助!我不知道sklearn有这个。哇!这是个好消息!我目前使用的是最新的稳定版本0.15.2。我应该更新到最新的开发版本吗?。很抱歉,我不知道如何为git合并找到正确的版本。@JimGB,我不熟悉sklearn的版本策略,所以当我需要稀疏的随机林时,我只是签出了
    master