# 더미화를 한 뒤의 모델 테스트fromsklearn.neighborsimportKNeighborsClassifierasKNNmodel=KNN().fit(d_Train_X,Train_Y)pred_Y=model.predict(d_Test_X)fromsklearn.metricsimportf1_scoref1_score(Test_Y,pred_Y)
0.0
연속형 변수로 치환
1
2
3
4
5
Train_df=pd.concat([Train_X,Train_Y],axis=1)forcolinTrain_X.columns:# 보통은 범주 변수만 순회temp_dict=Train_df.groupby(col)['Class'].mean().to_dict()# col에 따른 Class의 평균을 나타내는 사전 (replace를 쓰기 위해, 사전으로 만듦)Train_df[col]=Train_df[col].replace(temp_dict)# 변수 치환 Test_X[col]=Test_X[col].astype(str).replace(temp_dict)# 테스트 데이터도 같이 치환해줘야 함 (나중에 활용하기 위해서는 저장도 필요)
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
"""
# 치환한 뒤의 모델 테스트model=KNN().fit(Train_X,Train_Y)pred_Y=model.predict(Test_X)f1_score(Test_Y,pred_Y)# 라벨을 고려한 전처리이므로 더미화보다 좋은 결과가 나왔음 => 차원도 줄고 성능 상에 이점이 있으나,