Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用scikit时scipy.sparse矩阵的缩放问题_Python_Machine Learning_Scikit Learn - Fatal编程技术网

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

Python 使用scikit时scipy.sparse矩阵的缩放问题,python,machine-learning,scikit-learn,Python,Machine Learning,Scikit Learn,在使用scikit(python)解决机器学习问题时,我需要在使用SVM进行训练之前对scipy.sparse矩阵进行缩放,以获得更高的精度。但它明确提到: scale和StandardScaler仅当with_mean=False显式传递给构造函数时才接受scipy.sparse矩阵作为输入。否则将引发ValueError,因为静默居中将打破稀疏性,并且经常会由于无意中分配过多内存而导致执行崩溃。 这意味着我不能用零均值。那么我如何缩放这个稀疏矩阵,使它的均值和单位方差都为零。我还需要存储此“

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

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


这意味着我不能用零均值。那么我如何缩放这个稀疏矩阵,使它的均值和单位方差都为零。我还需要存储此“缩放”,以便在测试矩阵上使用相同的变换来缩放它。

如果矩阵很小,可以使用
X.toarray()
对其进行加密。如果矩阵很大,那么这可能会毁掉你的内存


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

我的矩阵非常大(500000 X 40000),因此我无法进行排列。规格化器会逐样本缩放,这意味着所有的数据点不会均匀缩放,因此我不能使用它。尽管如此,我还是想办法做到这一点。看来我得自己写一个脚本来完成这个任务。@Vinetchirania:数据代表什么?(无论如何,你可能无法将非线性支持向量机与如此大的数据量相匹配,因为支持向量机训练算法需要立方时间。)我尝试使用线性核支持向量机,但它在学习中花费了大量时间。所以我现在使用的是基于liblinear的LinearSVC,而不是libsvm。如果我不是说居中,只是缩放,那么这会影响精度吗?