해결된 질문
작성
·
246
0
안녕하세요 선생님 계속 질문드려서 죄송합니다. 다름이 아니라 pred_proba를 test 데이터에 적용하고 제출할때 오류가 발생해서 질문드립니다.
y_val_dumm = pd.get_dummies(y_val)
pred_proba = model.predict_proba(X_val)
print(roc_auc_score(y_val_dumm, pred_proba, multi_class = 'ovo'))
####마지막 제출!!
pred_proba = model.predict_proba(test)
pd.DataFrame({'id':test_id,
'Seg':pred_proba})
"Per-column arrays must each be 1-dimensional" 오류가 발생합니다. pred_proba의 컬럼을 지정 안해줘서 그런거 같은데 마지막 제출은 어떻게 해야 하나요??
답변 1
0
좋은 지적해주셨어요! 다중분류 확률은 출제 가능성은 낮지만 나온다면
각 클래스에 대한 확률을 각각의 컬럼으로 만들어야 합니다. 예를 들어, 클래스가 A, B, C 세 가지라면 A에 대한 확률, B에 대한 확률, C에 대한 확률을 각각의 컬럼으로 만들어야 해요
반복문을 사용하는 방법도 있지만 단순하게는 이런식으로 될 수 있겠네요!
각 클래스의 확률을 데이터프레임의 컬럼으로 만들기
pred_proba = model.predict_proba(test)
result_df = pd.DataFrame()
result_df['id'] = test_id #test_id라는 변수에는 test 데이터의 id가 있다는 가정
result_df['prob_class_0'] = pred_proba[:, 0]
result_df['prob_class_1'] = pred_proba[:, 1]
...(컬럼의 수 만큼)
pred_proba = model.predict_proba(test)
pd.DataFrame({
'id':test_id,
'pred_1':pred_proba[:,0],
'pred_2':pred_proba[:,1],
'pred_3':pred_proba[:,2]
}).to_csv('11111.csv', index = False)
이런 식으로 제출하면 되는건가요??
감사합니다!!