Scikit-Learn中的分类数据转换

时间:2015-01-09 08:44:24

标签: python numpy machine-learning scikit-learn

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

  1. 将这些数据纳入SK-learn中的任何分类模型是否有意义?我试图将数据拟合到随机森林模型中,但准确性极差。我还尝试过One Hot Encoding将数据转换为虚拟变量,但我的计算机只能在使用One Hot Encoding后处理稀疏矩阵,问题在于Random Forest只能采用密集矩阵,这将超出我计算机的内存。
  2. 在SK-learn中处理分类数据的正确策略是什么?

1 个答案:

答案 0 :(得分:1)

LabelEncoder在你的情况下没用,因为输出数字没有数字意义(即对它们执行算术运算没有意义)。处理分类数据时OneHotEncoder是必不可少的。

最近在随机森林和决策树中浏览了got support for sparse input,因此您可能需要查看最新版本。此外,其他方法(如LogisticRegression)也支持稀疏数据。

此外,我认为您不需要使用所有40M的示例来获得不错的准确性。它应该足以随机抽样,例如,100k它们(这个数字取决于OneHotEncoding之后的特征数量,它们的可变性和目标类的数量)。