데이터 전처리

PCA- UCI 크레딧 카드 실습

J.H_DA 2022. 4. 26. 10:16

캐글에서 데이터 셋 다운로드 후 데이터 로드

https://www.kaggle.com/datasets/uciml/default-of-credit-card-clients-dataset

 

Default of Credit Card Clients Dataset

Default Payments of Credit Card Clients in Taiwan from 2005

www.kaggle.com

df_credit = pd.read_csv("../datasets/UCI_Credit_Card.csv")

속성과 클래스로 데이터 분류

df_credit.rename(columns = {'PAY_':'PAY_1', 'default.payment.next.month':'default'}, inplace = True)

# 속성과 클래스로 데이터 분류
y_target = df_credit['default']
X_features = df_credit.drop('default', axis=1)

y_target.value_counts()

seaborn으로 상관게수 히트맵 확인

import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

corr = X_features.corr()
plt.figure(figsize = (14,14))
sns.heatmap(corr, annot=True, fmt='.1g')

원본 데이터일 때 랜덤 포레스트 예측 성능 확인

from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score

rcf = RandomForestClassifier(random_state=156)


# 원본 데이터일 때 랜덤 포레스트 예측 성능
scores_origin = cross_val_score(rcf, X_features, y_target,scoring = 'accuracy', cv =3)

print('CV =3 인 경우의 개별 Fold 세트별 정확도', scores)
print('평균 정확도: {0:.4f}'.format(np.mean(scores)))

CV =3 인 경우의 개별 Fold 세트별 정확도 [0.98 1. 1. ] 평균 정확도: 0.9933

 

PCA 변환된 데이터 셋의 랜덤 포레스트 예측 성능 확인

from sklearn.decomposition import PCA 
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score

rcf = RandomForestClassifier(random_state=156)

scaler = StandardScaler()
df_credit_scaled = scaler.fit_transform(X_features)

pca = PCA(n_components=5)
df_pca = pca.fit_transform(df_credit_scaled)
scores_pca = cross_val_score(rcf, df_pca, y_target, scoring = 'accuracy', cv=3)

print('CV =3 인 경우의 PCA 변환된 개별 Fold 세트별 정확도', scores)
print('PCA 변환 데이터 셋 평균 정확도 평균 정확도: {0:.4f}'.format(np.mean(scores_pca)))

 

 

 

728x90