AI·빅데이터 융합 경영학 Study Note
[ML수업] 8주차 실습5: feature engineering- Dimensionality Reduction (차원 축소) 본문
AI·ML
[ML수업] 8주차 실습5: feature engineering- Dimensionality Reduction (차원 축소)
SubjectOwner 2023. 11. 21. 15:53### PCA(Principal Component Analysis, 주성분분석)
원 데이터의 분포를 최대한 보존하면서 고차원 공간의 데이터들을 저차원 공간으로 변환하는 기법
from sklearn.decomposition import PCA
pca = PCA(n_components=10)
X_train_pca = pca.fit_transform(X_train_sc3)
X_test_pca = pca.transform(X_test_sc3)
print(X_train_pca.shape)
svm.fit(X_train_pca, y_train).score(X_test_pca, y_test)
#(426, 10)
#0.9790209790209791
# 각 주성분에 의해 설명되는 분산의 비율
plt.bar(range(len(pca.explained_variance_ratio_)), pca.explained_variance_ratio_)
# 적절한 주성분의 갯수를 결정하는 방법 중 하나
max_d = num_d = X_train.shape[1]
pca = PCA(n_components=max_d).fit(X_train_sc3)
cumsum = np.cumsum(pca.explained_variance_ratio_) #분산의 설명량을 누적합
#이 줄에서 설명 많이 함. 막대그래프에서 막대들을 다 더해서 몇 이상이 되는지를 여기서 결정
#PCA는 대부분의 데이터가 0인 경우에만 쓴다.
num_d = np.argmax(cumsum >= 0.99) + 1 #분산의 설명량이 99%이상 되는 차원의 수
if num_d == 1: num_d = max_d
pca = PCA(n_components=num_d, random_state=0)
X_train_pca = pca.fit_transform(X_train_sc3)
X_test_pca = pca.transform(X_test_sc3)
print(X_train_pca.shape)
svm.fit(X_train_pca, y_train).score(X_test_pca, y_test)
#(426, 15)
#0.986013986013986
'AI·ML' 카테고리의 다른 글
[ML수업] 10주차 실습1: pipeline_basics (0) | 2023.11.21 |
---|---|
[ML수업] 8주차 실습6: feature engineering- Feature Generation (0) | 2023.11.21 |
[ML수업] 8주차 실습4: feature engineering- Feature Selection (0) | 2023.11.21 |
[ML수업] 8주차 실습3: feature engineering- Numerical Feature Transformation (수치형) (0) | 2023.11.21 |
[ML수업] 8주차 실습2: feature engineering- Categorical Feature Transformation (범주형) (0) | 2023.11.21 |