Подтвердить что ты не робот

Как использовать scikit-learn PCA для уменьшения возможностей и знать, какие функции отбрасываются

Я пытаюсь запустить PCA на матрице размеров m x n, где m - количество функций и n число выборок.

Предположим, что я хочу сохранить функции nf с максимальной дисперсией. С помощью scikit-learn я могу сделать это следующим образом:

from sklearn.decomposition import PCA

nf = 100
pca = PCA(n_components=nf)
# X is the matrix transposed (n samples on the rows, m features on the columns)
pca.fit(X)

X_new = pca.transform(X)

Теперь я получаю новую матрицу X_new, которая имеет форму n x nf. Можно ли узнать, какие функции были отброшены или сохранены?

Спасибо

4b9b3361

Ответ 1

Функции, которые ваш объект PCA определил во время установки, находятся в pca.components_. Векторное пространство, ортогональное к тому, которое натянуто на pca.components_, отбрасывается.

Обратите внимание, что PCA не "отбрасывает" или "сохраняет" любые ваши предварительно определенные функции (закодированные указанными вами столбцами). Он смешивает все из них (по взвешенным суммам), чтобы найти ортогональные направления максимальной дисперсии.

Если это не то поведение, которое вы ищете, то сокращение размерности PCA - это не путь. Для некоторых простых общих методов выбора объектов вы можете взглянуть на sklearn.feature_selection

Ответ 2

Проецируемые функции на основные компоненты сохранят важную информацию (оси с максимальными отклонениями) и оси падения с небольшими отклонениями. Это поведение похоже на compression (Не отбрасывать).

И X_proj - лучшее имя X_new, потому что это проекция X на principal components

Вы можете восстановить X_rec как

X_rec = pca.inverse_transform(X_proj) # X_proj is originally X_new

Здесь X_rec близок к X, но информация о less important была удалена с помощью PCA. Таким образом, мы можем сказать, что X_rec denoised.

По-моему, я могу сказать, что the noise отбрасывается.

Ответ 3

Указанный выше ответ неверен. На сайте sklearn четко указано, что массив components_ отсортирован. поэтому он не может использоваться для идентификации важных функций.

components_: array, [n_components, n_features] Основные оси в пространстве объектов, представляющие направления максимальной дисперсии данных. Компоненты сортируются с помощью explain_variance _.

http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html