Scikit-Learn 中的分类数据转换
Categorical data transformation in Scikit-Learn
我有一个用于分类任务的 4000 万 x 22 numpy 整数数据数组。
大多数特征是分类数据,使用不同的整数值来表示不同的类别。例如,在"Color" 列中:0 表示蓝色,1 表示红色,依此类推。我已经使用 LabelEncoder 预处理了数据。
- 将这些数据拟合到 SK-learn 中的任何分类模型是否有意义?我试图将数据拟合到随机森林模型中,但准确性极差。我也尝试过One Hot Encoding将数据转化为dummy variables,但是我的电脑使用One Hot Encoding后只能处理稀疏矩阵,问题是Random Forest只能取稠密矩阵,会超出我电脑的内存。
- 在 SK-learn 中处理分类数据的正确策略是什么?
LabelEncoder
在您的情况下没有用,因为输出数字作为数字没有任何意义(即对它们执行算术运算毫无意义)。 OneHotEncoder
在处理分类数据时必不可少。
最近 sklearn got support for sparse input in Random Forests and Decision Trees, so you might want to check out the latest version. Also, other methods like LogisticRegression 支持稀疏数据。
此外,我不认为您需要使用所有 40M 的示例才能获得不错的准确性。随机抽取 100k 个样本应该就足够了(这个数字取决于 OneHotEncoding 之后的特征数量、它们的可变性和目标数量 类)。
我有一个用于分类任务的 4000 万 x 22 numpy 整数数据数组。 大多数特征是分类数据,使用不同的整数值来表示不同的类别。例如,在"Color" 列中:0 表示蓝色,1 表示红色,依此类推。我已经使用 LabelEncoder 预处理了数据。
- 将这些数据拟合到 SK-learn 中的任何分类模型是否有意义?我试图将数据拟合到随机森林模型中,但准确性极差。我也尝试过One Hot Encoding将数据转化为dummy variables,但是我的电脑使用One Hot Encoding后只能处理稀疏矩阵,问题是Random Forest只能取稠密矩阵,会超出我电脑的内存。
- 在 SK-learn 中处理分类数据的正确策略是什么?
LabelEncoder
在您的情况下没有用,因为输出数字作为数字没有任何意义(即对它们执行算术运算毫无意义)。 OneHotEncoder
在处理分类数据时必不可少。
最近 sklearn got support for sparse input in Random Forests and Decision Trees, so you might want to check out the latest version. Also, other methods like LogisticRegression 支持稀疏数据。
此外,我不认为您需要使用所有 40M 的示例才能获得不错的准确性。随机抽取 100k 个样本应该就足够了(这个数字取决于 OneHotEncoding 之后的特征数量、它们的可变性和目标数量 类)。