해결된 질문
작성
·
193
0
IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed - 이런 오류가 뜨는데 어떤 문제일까요..? 아래는 제가 풀이한 방식입니다.
# 2. 전처리
# 2-1. 불필요한 컬럼 제거
train = train.drop(columns = ['id'])
test_id = test.pop('id')
# 3. 분리
from sklearn.model_selection import train_test_split
X_tr, X_val, y_tr, y_val = train_test_split(train.drop(columns = 'output'), train['output'], test_size = 0.2, random_state = 2022)
# X_tr.shape, X_val.shape, y_tr.shape, y_val.shape
# 4. 학습
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(random_state = 2022, max_depth = 5, n_estimators = 400)
model.fit(X_tr, y_tr)
pred = model.predict(X_val)
pred_proba = model.predict_proba(X_val)
# 5. 평가
from sklearn.metrics import accuracy_score, roc_auc_score
accuracy_score(y_val, pred)
roc_auc_score(y_val, pred_proba[:, 1])
# 6. 결과
pred_proba = model.predict(test)
pd.DataFrame({'id' : test_id, 'output' : pred_proba[:,1]}).to_csv('00000.csv', index = False)
# pd.read_csv('00000.csv')
또한 제가 다른 방법으로 풀었을 때
이렇게 나오는건 왜이런걸까요..
답변 1
0
pred = model.predict(X_val)와
pred_proba = model.predict_proba(X_val)
의 결과는 다릅니다.
pred에는 클래스만 예측되고 0, 1, 0, 0, 1
pred_proba에는 0확률과 1확률로 2개의 값이 예측되어 있어요
마지막 부분 결과 예측에서 model.predict(test)을 예측했어요! 확률값만 대입하려고 하면
model.predict_proba(test)로 예측하세요!
# 6. 결과
pred_proba = model.predict(test)
pd.DataFrame({'id' : test_id, 'output' : pred_proba[:,1]}).to_csv('00000.csv', index = False)
넵 상세한 답변 감사합니다! roc_auc_score 사용 시에는
분리에서 pred_proba = model.predict_proba(X_val)
평가에서 pred = model.predict_proba(test)
로 수정하겠습니다.!