Декомпозиция PCA с помощью Python: актуальность функций

Я слежу за следующей темой: Как я могу использовать PCA / SVD в Python для выбора и идентификации функций? Теперь мы разложим наш набор данных в Python с помощью метода PCA и используем для этого sklearn.decomposition.PCA С использованием атрибутов components_ мы получаем все компоненты. Теперь у нас очень похожая цель: взять только первые несколько компонентов (эта часть не является проблемой) и посмотреть, какие пропорции входных функций имеет каждый компонент PCA (чтобы знать, какие функции для нас очень важны). Как это сделать? Другой вопрос, есть ли у python lybrary другие реализации анализа главных компонентов?


person Guforu    schedule 12.03.2014    source источник


Ответы (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 для подробностей.

person ogrisel    schedule 12.03.2014
comment
Большое спасибо, вы мне очень помогаете. - person Guforu; 12.03.2014