Могу ли я стандартизировать мой прикладной вектор подсчета PCA? - PullRequest
2 голосов
/ 07 марта 2019

Я применил CountVectorizer() к своему X_train, и он вернул разреженную матрицу.

Обычно, если мы хотим стандартизировать разреженную матрицу, мы передаем with_mean=False параметр.

scaler = StandardScaler(with_mean=False)
X_train = scaler.fit_transform()

Но в моем случае после применения CountVectorizer на моем X_train я также выполнил PCA (TruncatedSVD), чтобы уменьшить размеры. Теперь мои данные не являются разреженной матрицей.

Так что теперь я могу применить StandardScaler() напрямую, не пропуская with_mean=False (i.e with_mean=True)?

1 Ответ

1 голос
/ 08 марта 2019

Если вы посмотрите на то, что делает параметр with_mean, вы обнаружите, что он просто центрирует ваши данные перед масштабированием. Причина, по которой вы не центрируете разреженную матрицу, заключается в том, что при попытке центрировать разреженную матрицу она преобразуется в плотную матрицу и занимает гораздо больше памяти, тем самым, в первую очередь, разрушая ее разреженность.

После выполнения PCA ваши данные имеют уменьшенные размеры и теперь могут быть отцентрированы перед масштабированием. Так что да, вы можете подать StandardScaler() напрямую.

...