-
카테고리
-
세부 분야
딥러닝 · 머신러닝
-
해결 여부
미해결
PCA 관련 질문
21.04.24 14:51 작성 조회수 129
0
안년하세요 강사님, 6장에서 신용카드 문제에 대해서 질문이 있습니다.
책에서는 전체 피처를 6개로 줄입니다. 저는 상관관계가 높은 피처만을 차원축소하고 나머지 피처는 그대로 사용해보려고 했는데 정확도가 많이 낮아졌습니다. 기존에 상관관계가 높았던 BILL_AMT1~6까지를 축소하고 이를 원데이터에서 BILL_AMT1~6 컬럼을 드랍한 데이터프레임과 합쳐서 학습 및 평가를 수행했는데 이 과정에서 예측성능이 안좋아진 이유가 있을까요?
답변을 작성해보세요.
1
권 철민
지식공유자2021.04.25
해당 경우에 cv=3 으로 설정하면 성능이 잘 안나오는 군요. cv=5로 적용하니 원본 데이터 정도로 성능이 나옵니다. cv=3으로 할때 뭔가 학습/검증 중 어느 한세트가 성능이 완전히 잘못 나온것 같습니다.
0
작은빗방울
질문자2021.04.24
import pandas as pd
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
df=pd.read_excel('/content/drive/MyDrive/credit_card.xls',sheet_name='Data',header=1)
df.rename(columns={'PAY_0':'PAY_1','default payment next month':'default'},inplace=True)
X_features=df.drop(['ID', 'default'],axis=1)
y_target=df['default']
bill_cols=['BILL_AMT'+str(i) for i in range(1,7)]
scaler=StandardScaler()
df_cols_scaled=scaler.fit_transform(X_features[bill_cols])
pca=PCA(n_components=2)
col_pca=pca.fit_transform(df_cols_scaled)
bill=pd.DataFrame(data=col_pca, columns=['bill_pca_1','bill_pca_2'])
df0=df.copy()
pca_df=pd.concat([df0,bill],axis=1)
pca_df.drop(bill_cols,axis=1,inplace=True)
X_features1=pca_df.drop('default',axis=1)
y_target=pca_df['default']
rf=RandomForestClassifier(n_estimators=300, random_state=156)
scores=cross_val_score(rf, X_features1, y_target,scoring='accuracy', cv=3)
print('평균 정확도:', np.round(np.mean(scores),4))
이런 식으로 코드를 짜봤는데 0.61정도로 예측 성능이 많이 떨어지는 것 같습니다
0
답변 3