Я слежу за следующей темой: Как я могу использовать PCA / SVD в Python для выбора и идентификации функций? Теперь мы разложим наш набор данных в Python с помощью метода PCA и используем для этого sklearn.decomposition.PCA
С использованием атрибутов components_
мы получаем все компоненты. Теперь у нас очень похожая цель: взять только первые несколько компонентов (эта часть не является проблемой) и посмотреть, какие пропорции входных функций имеет каждый компонент PCA (чтобы знать, какие функции для нас очень важны). Как это сделать? Другой вопрос, есть ли у python lybrary другие реализации анализа главных компонентов?
Декомпозиция PCA с помощью Python: актуальность функций
Ответы (1)
какие пропорции входных функций имеет каждый компонент PCA (чтобы знать, какие функции для нас очень важны). Как это сделать?
Массив components_
имеет форму (n_components, n_features)
, поэтому components_[i, j]
уже дает вам (подписанные) веса вклада функции j
в компонент i
.
Если вы хотите получить индексы трех основных функций, вносящих вклад в компонент i
, независимо от знака, вы можете сделать:
numpy.abs(pca.component_[i]).argsort()[::-1][:3]
Примечание: обозначение [::-1]
позволяет изменить порядок массива:
>>> import numpy as np
>>> np.array([1, 2, 3])[::-1]
array([3, 2, 1])
Другой вопрос: есть ли в библиотеке Python другие реализации анализа основных компонентов?
PCA - это просто усеченная декомпозиция по сингулярным значениям центрированного набора данных. Вы можете использовать numpy.linalg.svd
напрямую, если хотите. Взгляните на исходный код реализации scikit-learn PCA для подробностей.