【问题标题】:Can I standardize my PCA applied count vector?我可以标准化我的 PCA 应用计数向量吗?
【发布时间】:2019-03-07 15:40:44
【问题描述】:

我在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(i.e with_mean=True)吗?

【问题讨论】:

  • 据我所知,数据标准化是 PCA 算法的一部分。因此,在我看来,您可以保留 with_mean=False 原样。你同意吗?
  • @Rubens_Zimbres 我不认为数据标准化是 PCA 算法的一部分,但我们通常更喜欢在将数据传递给 PCA 之前对其进行缩放。否则,某些变量的大小决定了变量之间的关联。下面的答案确实解释了为什么我们传入with_mean=False。实际上我确实认为我们可以直接应用它而无需with_mean 参数。我很想看到其他回复。

标签: python machine-learning scikit-learn pca


【解决方案1】:

如果您按照with_mean 参数的作用采用look,您会发现它只是在缩放之前将您的数据居中。您不将稀疏矩阵居中的原因是,当您尝试将稀疏矩阵居中时,它将转换为密集矩阵并占用更多内存,从而首先破坏其稀疏性。

执行 PCA 后,您的数据已减小维度,现在可以在缩放之前居中。所以是的,你可以直接申请StandardScaler()

【讨论】:

    猜你喜欢
    • 2016-05-25
    • 2010-10-30
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 1970-01-01
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多