将具有混合列类型(数字,有序以及分类)的熊猫数据框转换为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稀疏数组是机器学习中的一个中心问题。现在,如果我的熊猫的数据框...
您可以使用factorize
轻松地将任何单列转换为稀疏的COO数组。这将比构建巨大的密集数据帧快得多。