Как сохранить метки классов во время PCA - PullRequest
0 голосов
/ 25 марта 2020

Как сохранить метки при выполнении PCA? Я видел 2 учебника, и они пропустили это полностью: учебник

Вот мой код:

combinedOutputDataFrame = pd.DataFrame(resultArray)

# Separating out the features
x = combinedOutputDataFrame.loc[:, 0:31].values
# Separating out the target
y = combinedOutputDataFrame.loc[:,[32]].values

from sklearn.decomposition import PCA
pca = PCA(n_components=3)
principalComponents = pca.fit_transform(x)
principalDataFrame = pd.DataFrame(data = principalComponents
             , columns = ['principal component 1', 'principal component 2', 'principal component 3'])

finalDf = pd.concat([principalDataFrame, combinedOutputDataFrame[[32]]], axis = 1)

Как я могу быть уверен, в каком порядке PrincipalComponents , хотя?

principalComponents
array([[129.58602603, -21.59786631,  -6.84613849],
           [-39.42963482,  35.19985695,  19.86945922],
           [ 54.81949577,  -5.96905719, -76.57776259],
           ...,
           [ 69.21840475, -35.17983093, -39.66853653],
           [ 18.91508026, -41.64341368,   0.21503516],
           [145.91595004, 127.82236242, 115.14571367]])

Моя конечная цель - это визуализировать и раскрасить каждую точку на графике соответствующим классом. Но как я могу нанести метки на данные после выполнения PCA?

1 Ответ

1 голос
/ 26 марта 2020

Компоненты уже упорядочены в порядке убывания от того, который объясняет наибольшую дисперсию к тому, который объясняет наименьшее. Вы можете проверить это, распечатав объясненный коэффициент дисперсии с помощью pca.explained_variance_ratio_

import numpy as np
from sklearn.decomposition import PCA

# just a random matrix 
rand_matrix = np.random.rand(30,6)

pca = PCA(n_components=3)
principalComponents = pca.fit_transform(rand_matrix)
print(pca.explained_variance_ratio_)

Out: 
array([0.28898895, 0.22460396, 0.16874681])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...