У меня есть очень много данных со МНОГИМИ измерениями (тысячами), и я успешно выполнил анализ основных компонентов.
Вывод выглядит так, как показано выше. Моя проблема заключается в том, что (как показано на оси 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()