2유형 학습중 이해를 잘 못한 부분이 있습니다. 먼저 수치형 변수 스케일러의 경우 스케일러함수(train) 이렇게만 사용하거나 스케일러함수(train['수치형변수'] 이렇게 사용할 때가 있고 동일하게 변수형 변수 인코딩의 경우 라벨인코딩(train) 이렇게는 사용 안하고 항상 라벨인코딩(train[cols]) 이렇게 사용하시는데 원핫인코딩(train) 이런식으로 사용하시는 부분에 있어서 어떤 함수가 파이썬에서 자동으로 수치형과 범주형을 구분해서 변환해주는지 궁금합니다. GPT에도 확인했지만 물어볼 때마다 답이 다르네요...
문제에서 평가지표가 ROC-AUC, 정확도, F1 세가지가 있고 모델&평가할 때 이 지표 세가지를 다 구해서 확인을 했는데 마지막에 test데이터를 활용해서 실제 예측을 할 때는 왜 pred_proba를 사용한건가요? ROC-AUC를 기준으로 선택해서 그런건가요? 그럼 정확도 기준으로 선택하면 pred 사용해도 되는건가요? <문제> ## 심장마비 확률이 높은사람? - 성별, 나이, 혈압, 콜레스테롤, 공복혈당, 최대 심박수 등의 컬럼이 있음 - 평가: ROC-AUC, 정확도(Accuracy), F1 을 구하시오 - target : output (1:심장마비 확률 높음, 0:심장마비 확률 낮음) - csv파일 생성 : 수험번호.csv (예시 아래 참조) <모델&평가> # xgb from xgboost import XGBClassifier from sklearn.metrics import roc_auc_score, f1_score, accuracy_score xgb = XGBClassifier(random_state=2022) xgb.fit (X_tr, y_tr) pred = xgb.predict(X_val) pred_proba = xgb.predict_proba(X_val) print(roc_auc_score(y_val, pred_proba[:,1])) print(f1_score(y_val, pred)) print(accuracy_score(y_val, pred)) <예측 및 csv 제출> pred_proba = xgb.predict_proba(test)
질문1) 모델 학습 및 예측하기 전에 왜 수치형 데이터만 cols로 뽑으셨는지 궁금합니다. 혹시 object 형태는 인코딩 작업으로 모두 수치형 자료로 바꿔줘야 하는데 그 과정을 생략하기 위해서 cols 형태로 뽑으신건가요 ? 질문2) target = train.pop() 이부분이 잘 이해가 가지 않습니다 model.fit(train[cols], train['성별'])을 해줘도 상관은 없는건가요? 항상 수업에서 검증 데이터를 x_tr, x_val, y_tr, y_val로 나눠서 model.fit(x_tr, y_tr)형태로 넣는 것에 익숙하다 보니 혼동이 오는 것 같습니다 ㅠㅠ!
데이터프레임을 만들때 'ID'는 test_id로 pop 했기 때문에 'ID':test_ID가 되는게 이해가 되는데 그러면 'Segmentation'은 :pred가 아닌 target이 되어야 하는것 아닌가요? target = train.pop('Segmentation') test_ID = test.pop('ID') # 예측 결과 -> 데이터 프레임 submit = pd.DataFrame({ 'ID': test_ID, 'Segmentation':pred }) submit
rf.fit( train,target )에 들어가는 값과 pred = rf.predict( test )에 들어가는 값이 train,target, test가 들어가는 이유가 있나요? 저기 들어가는 값의 기준이 궁금합니다. # 모델 선택 및 학습 from sklearn.ensemble import RandomForestClassifier rf = RandomForestClassifier(random_state=0) rf.fit(train, target) pred = rf.predict(test) pred
영상 위치) 21:25 결과 예측 관련 질문입니다. 1) 랜덤포레스트랑 XGB로 평가한 후, 마지막에 예측은 XGB로 했는데 어떤 기준으로 XGB를 선택하는건가요?? 2) pred랑 pred_proba 중에 pred_proba를 사용한 이유가 있나요? pred_proba = xgb.predict_proba(test)
수치형 변수 스케일링을 할때 cols 에서 왜 TravelInsurance 는 제외시키나요? 그리고 display함수가 print함수와 다른 점은 무엇인가요? # 수치형 변수 스케일링 from sklearn.preprocessing import RobustScaler scaler = RobustScaler() cols = ['Age','AnnualIncome','FamilyMembers','ChronicDiseases'] display(a_train.head()) a_train[cols] = scaler.fit_transform(a_train[cols]) a_test[cols] = scaler.transform(a_test[cols]) a_train.head()