将熊猫数据帧转换为稀疏稀疏数组

问题描述 投票:2回答:1

将具有混合列类型(数字,有序以及分类)的熊猫数据框转换为Scipy稀疏数组是机器学习中的中心问题。

现在,如果我的熊猫的数据框仅包含数值数据,则I can simply do以下内容将数据框转换为稀疏的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(熊猫或Scikit-Learn版本)轻松处理它们。

我主要关心的是具有大量值的分类变量。

主要问题:

如何处理具有大量值的分类变量?
pd.get_dummies(train_set, columns=[categorical_columns_with_large_number_of_values], sparse=True)

花费很多时间。

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

让我知道您是否知道有效的方法。谢谢。

将具有混合列类型(数字,序数和类别)的熊猫数据框转换为Scipy稀疏数组是机器学习中的一个中心问题。现在,如果我的熊猫的数据框...

pandas sparse-matrix
1个回答
1
投票

您可以使用factorize轻松地将任何单列转换为稀疏的COO数组。这将比构建巨大的密集数据帧快得多。

© www.soinside.com 2019 - 2024. All rights reserved.