将熊猫数据框转换为 scipy 稀疏数组

数据挖掘 熊猫 scipy
2022-02-11 22:04:04

将具有混合列类型(数值、序数和分类)的 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)

也需要很多时间。

这个问题似乎给出了有趣的方向,但是,尚不清楚它是否有效地处理了所有数据类型。

如果您知道有效的方法,请告诉我。谢谢。

0个回答
没有发现任何回复~