Процент оригинальных функций, составляющих PC1 в PCA - PullRequest
2 голосов
/ 09 апреля 2019

Я использовал PCA, чтобы найти 60 ПК:

N_comp=60 
from sklearn.decomposition import PCA
pca = PCA(n_components = N_comp)
X_pca=pca.fit_transform(X_scale) #lower dimension data
eigenvalues=pca.components_

Теперь я пытаюсь найти вклад моих функций (столбцы данных X) в ПК1 и ПК2.Например, для ПК1 я хотел бы показать гистограмму процентного соотношения каждой из 10 лучших функций, где на оси x будут метки объектов.

примерно так: https://i.stack.imgur.com/Hz24K.png

Я пытаюсь сделать это в Python, но не могу понять, как найти названия функций.Например, я выполнил сортировку, чтобы найти 10 основных переменных, составляющих PC1, в виде:

N_elements=10
PC1=abs(eigenvalues[1,:])
PC1.sort(axis=0)
PC1=PC1[::-1]
PC1=PC1[0:N_elements]
PC1

, что приводит к

array([0.17040832, 0.16937861, 0.1683676 , 0.16544657, 0.16491703,
   0.16491679, 0.16168056, 0.16108829, 0.16034576, 0.16029183])

и построение графика:

plt.bar(range(N_elements), PC1, alpha=0.3, align='center')
plt.title('Contributions of variables to PC1')

, но это приводит к тому, что ось X состоит из цифр от 0 до 9 (соответствует 10 элементам).Как я могу получить имена и поставить метки на линейке?

https://i.stack.imgur.com/iFdDt.png

Большое спасибо!

...