使用scikit时缩放scipy.sparse矩阵的问题

时间:2013-11-27 10:36:37

标签: python machine-learning scikit-learn

在使用scikit(python)解决机器学习问题时,我需要在使用SVM进行训练之前对scipy.sparse矩阵进行缩放,以获得更高的准确性。但其明确提到here,即:

仅当with_mean = False显式传递给构造函数时,

scale和StandardScaler才接受scipy.sparse矩阵作为输入。否则会引发ValueError,因为静默居中会破坏稀疏性,并且通常会无意中分配过多的内存而导致执行崩溃。

这意味着我不能没有这个意思。那么我该如何缩放这个稀疏矩阵,使它与单位方差一起具有零均值。我还需要存储这个'缩放',这样我就可以在测试矩阵上使用相同的变换来缩放它。

1 个答案:

答案 0 :(得分:3)

如果矩阵很小,您可以使用X.toarray()对其进行加密。如果矩阵很大,那么这可能会破坏你的RAM。

作为均值居中和缩放的替代方法,您可以尝试使用sklearn.preprocessing.Normalizer进行每样本规范化;这适用于频率特征(例如在文本分类中)。