在使用scikit(python)解决机器学习问题时,我需要在使用SVM进行训练之前对scipy.sparse矩阵进行缩放,以获得更高的准确性。但其明确提到here,即:
仅当with_mean = False显式传递给构造函数时,scale和StandardScaler才接受scipy.sparse矩阵作为输入。否则会引发ValueError,因为静默居中会破坏稀疏性,并且通常会无意中分配过多的内存而导致执行崩溃。
这意味着我不能没有这个意思。那么我该如何缩放这个稀疏矩阵,使它与单位方差一起具有零均值。我还需要存储这个'缩放',这样我就可以在测试矩阵上使用相同的变换来缩放它。
答案 0 :(得分:3)
如果矩阵很小,您可以使用X.toarray()
对其进行加密。如果矩阵很大,那么这可能会破坏你的RAM。
作为均值居中和缩放的替代方法,您可以尝试使用sklearn.preprocessing.Normalizer
进行每样本规范化;这适用于频率特征(例如在文本分类中)。