在使用 scikit-learn 解决机器学习问题时,我需要在使用 SVM 进行训练之前对 scipy.sparse 矩阵进行缩放。但在文档 http://scikit-learn.org/stable/modules/preprocessing.html#preprocessing其中明确提到:
仅当 with_mean=False 显式传递给构造函数时,scale 和 StandardScaler 才接受 scipy.sparse 矩阵作为输入。否则,将引发 ValueError,因为静默居中会破坏稀疏性,并且经常会因无意中分配过多内存而导致执行崩溃。
这意味着我不能对此进行零均值。那么如何缩放这个稀疏矩阵,使其均值和单位方差也为零?我还需要存储这个“缩放”,以便我可以在测试矩阵上使用相同的转换来缩放它。
如果矩阵很小,可以用以下方法使其稠密化:X.toarray()
。如果矩阵很大,那么这可能会耗尽你的 RAM。
作为均值中心化和缩放的替代方法,您可以尝试使用每个样本归一化sklearn.preprocessing.Normalizer
;这适用于频率特征(例如在文本分类中)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)