将具有混合列类型(数值、序数和分类)的 pandas 数据框转换为 Scipy 稀疏数组是机器学习中的一个核心问题。
现在,如果我的 pandas 数据框仅包含数字数据,那么我可以简单地执行以下操作将数据框转换为稀疏 csr 矩阵:
scipy.sparse.csr_matrix(df.values)
如果我的数据框由序数数据类型组成,我可以使用LabelEncoder处理它们
from collections import defaultdict
d = defaultdict(LabelEncoder)
fit = df.apply(lambda x: d[x.name].fit_transform(x))
然后,我可以再次使用以下内容,问题就解决了:
scipy.sparse.csr_matrix(df.values)
具有少量值的分类变量也不是问题。可以使用 pd.get_dummies(Pandas 或 Scikit-Learn 版本)轻松处理它们。
我主要关心的是具有大量值的分类变量。
主要问题:如何处理具有大量值的分类变量?
pd.get_dummies(train_set, columns=[categorical_columns_with_large_number_of_values], sparse=True)
也需要很多时间。
这个问题似乎给出了有趣的方向,但是,尚不清楚它是否有效地处理了所有数据类型。
如果您知道有效的方法,请告诉我。谢谢。