PCA는 가장 대표적인 차원 축소 기법으로, 여러 변수 간에 존재하는 상관관계를 이용해 이를 대표하는 주성분을 추출해 차원을 축소하는 기법이다.
제일 먼저 가장 큰 데이터 변동성을 기반으로 첫 번째 벡터 축을 생성하고, 두 번째 축은 이 벡터 축에 직각이 되는 벡터(직교 벡터)를 축으로 한다. 세 번째 축은 다시 두 번째 축과 직각이 되는 벡터를 설정하는 방식으로 축을 생성한다. 이렇게 생성된 벡터 축에 원본 데이터를 투영하면 벡터 축의 개수만큼의 차원으로 원본 데이터가 차원 축소 된다.
1) 입력 데이터 세트의 공분산 행렬을 생성한다.
2) 공분산 행렬의 고유벡터와 고유값을 계산한다.
3) 고유값이 가장 큰 순으로 k개(PCA변환 차수)만큼 고유벡터를 추출한다.
4) 고유값이 가장 큰 순으로 추출된 고유벡터를 이용해 새롭게 입력 데이터를 변환한다.
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
#스케일링
scaler= StandardScaler()
scaled=scaler.fit_transform(X_feature)
#PCA
pca=PCA(n_components=2) #차원축소할 차원 차수
pca.fit(scaled)
col_pca=pca.transform(scaled)
#cross_val_score()로 분류 예측 수행
rcf=RandomForestClassifier(n_estimators=300,random_state=42)
scores_pca=cross_val_score(rcf,col_pca,y_target,scoring='accuracy',cv=3)
#개별 PCA 컴포넌트별로 차지하는 변동성 비율 explained_variance_ratio_
print(pca.explained_variance_ratio_)