PCA - отслеживание основного компонента в измерении - PullRequest
0 голосов
/ 08 ноября 2019

У меня есть очень много данных со МНОГИМИ измерениями (тысячами), и я успешно выполнил анализ основных компонентов. enter image description here

Вывод выглядит так, как показано выше. Моя проблема заключается в том, что (как показано на оси X) один главный компонент учитывает все отклонения. Я волнуюсь, что он маскирует все другие основные компоненты. Поэтому я хочу выяснить, какому измерению соответствует основной компонент, а затем исключить его из моих данных. Есть ли способ выяснить, какому измерению оно соответствует?

Если какой-либо код необходим для понимания, это:

print(fdata.shape) 

# scale data
scaled_fdata = preprocessing.scale(fdata.T) 

# setting up PCA

pca = PCA()
pca.fit(scaled_fdata)
pca_data = pca.transform(scaled_fdata)

# scree plot to see how many pricipal components are needed to account for most variance

per_var = np.round(pca.explained_variance_ratio_* 100, decimals=1)
labels = ['PC' + str(x) for x in range(1, len(per_var)+1)]

# create scree plot diagram to see how many principal components should be used

plt.bar(x=range(1,len(per_var)+1), height=per_var, tick_label=labels)
plt.ylabel('Percentage of Explained Variance')
plt.xlabel('Principal Component')
plt.title('Scree Plot - Females')
plt.show()

#do the PCA plot

pca_df = pd.DataFrame(pca_data, columns=labels)

plt.scatter(pca_df.PC1, pca_df.PC2)
plt.title('My PCA Graph - Females')
plt.xlabel('PC1 - {0}%'.format(per_var[0]))
plt.ylabel('PC2 - {0}%'.format(per_var[1]))

for sample in pca_df.index:
    plt.annotate(sample, (pca_df.PC1.loc[sample], pca_df.PC2.loc[sample]))

plt.show()
plt.qt() 

1 Ответ

0 голосов
/ 08 ноября 2019

Я не думаю, что вам нужно беспокоиться о masking all of the other principal components, так как это основная причина сделать основной компонент. Обычно, когда вы делаете PCA, выдается соответствующее значение Eigen Value, которое будет использоваться для ранжирования важности ПК, иначе говоря, ПК ранжируются на основе того, насколько они могут объяснить дисперсию, первый объяснил наибольшую дисперсию. , который "маскирует" другие ПК. Затем второй, третий и так далее. Все, что вам нужно сделать, это построить график кумулятивного суммирования объясненной дисперсии и выбрать отсечение того, сколько ПК вы хотите использовать. Например, из 5 лучших компьютеров можно объяснить 99% отклонения, вам нужны только эти 5 компьютеров.

Прочитайте это: https://towardsdatascience.com/an-approach-to-choosing-the-number-of-components-in-a-principal-component-analysis-pca-3b9f3d6e73fe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...