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

Vin*_*nia 6 python machine-learning scikit-learn

在使用scikit(python)解决机器学习问题的同时,我需要对scipy.sparse矩阵进行缩放,然后再使用SVM进行训练,以实现更高的准确性。但其明确提到这里,即:

只有在with_mean = False显式传递给构造函数时,scale和StandardScaler才接受scipy.sparse矩阵作为输入。否则将引发ValueError,因为静默居中会破坏稀疏性,并经常由于无意中分配过多的内存而使执行崩溃。

这意味着我对此不能有零均值。因此,如何缩放此稀疏矩阵,使其随单元方差也具有零均值。我还需要存储此“缩放”,以便可以在测试矩阵上使用相同的转换来缩放它。

Fre*_*Foo 5

如果矩阵较小,则可以使用进行增密X.toarray()。如果矩阵很大,则可能会消耗您的RAM。

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