PCA уменьшил размеры до 2, линейно комбинируя начальные характеристики.После преобразования выходные данные представляют собой матрицу с размером [выборки, компоненты] и, следовательно, невозможно создать кадр данных, поскольку вы не можете проецировать обратно имена / функции.
Важными функциями являютсяте, которые влияют больше на компоненты и, следовательно, имеют большое абсолютное значение для компонента.
Если вы измените код, вы сможете получить самые важные функции на ПК :
from sklearn.decomposition import PCA
import pandas as pd
import numpy as np
np.random.seed(0)
# 10 samples with 5 features
train_features = np.random.rand(10,5)
model = PCA(n_components=2).fit(train_features)
X_pc = model.transform(train_features)
# number of components
n_pcs= model.components_.shape[0]
# get the index of the most important feature on EACH component
# LIST COMPREHENSION HERE
most_important = [np.abs(model.components_[i]).argmax() for i in range(n_pcs)]
initial_feature_names = ['a','b','c','d','e']
# get the names
most_important_names = [initial_feature_names[most_important[i]] for i in range(n_pcs)]
# LIST COMPREHENSION HERE AGAIN
dic = {'PC{}'.format(i+1): most_important_names[i] for i in range(n_pcs)}
# build the dataframe
df = pd.DataFrame(sorted(dic.items()))
Это печатает:
0 1
0 PC1 e
1 PC2 d
Таким образом, на ПК1 функция с именем e
является наиболее важной, а на ПК2 d
.