我已经在X_train
上应用了CountVectorizer()
,它返回了一个稀疏矩阵。
通常,如果我们想要标准化稀疏矩阵,我们会传递with_mean=False
参数。
scaler = StandardScaler(with_mean=False)X_train = scaler.fit_transform()
但在我的情况下,在X_train
上应用CountVectorizer后,我还进行了PCA(TruncatedSVD)来降低维度。现在我的数据不再是稀疏矩阵了。
那么现在我可以直接应用StandardScaler()
而无需传递with_mean=False
(即with_mean=True
)吗?
回答:
如果你查看with_mean
参数的作用,你会发现它只是在缩放前对数据进行居中处理。不对稀疏矩阵进行居中的原因是,当你尝试居中稀疏矩阵时,它会被转换成密集矩阵,并会占用更多的内存,从而首先破坏其稀疏性。
在你执行PCA后,你的数据维度已经降低,现在可以在缩放前进行居中处理。因此,是的,你可以直接应用StandardScaler()
。