n_component в sklearn pca равно числу проблем с функциями - PullRequest
1 голос
/ 02 ноября 2019

Если я не установил параметр n_components, количество сохраняемых компонентов равно количеству признаков в фрейме данных.

Если n_components не установлено, преобразованный фрейм данных должен бытьто же самое, но оказывается, что это не так.

Почему преобразованный кадр данных отличается от исходного кадра данных?

import pandas as pd
pca = PCA(random_state=seed)
pd1 = pd.DataFrame([[1,1,1],[2,2,2],[3,3,3]])
pca.fit(pd1)
print(pd1)
print(pca.transform(pd1))

вывод:

0  1  2
0  1  1  1
1  2  2  2
2  3  3  3
[[-1.73205081e+00 -1.11022302e-16  0.00000000e+00]
 [ 0.00000000e+00  0.00000000e+00  0.00000000e+00]
 [ 1.73205081e+00  1.11022302e-16  0.00000000e+00]]

1 Ответ

3 голосов
/ 02 ноября 2019

Документация в sklearn pca page говорит

n_components == min(n_samples, n_features)

Так вот почему ваш результат состоит из 3 компонентов.

И тогда PCA просто сделает своевещь путем преобразования ваших данных в эти 3 основные оси, где дисперсия максимальна (и ортогональна).

Чтобы получить более математическое объяснение того, что делает PCA, пожалуйста, проверьте другие источники, такие как PCA wikipedia

...