인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

김민정님의 프로필 이미지
김민정

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

작업형2 모의문제3

섹션5 모의문제3번

해결된 질문

작성

·

204

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)

로 수정하겠습니다.!

김민정님의 프로필 이미지
김민정

작성한 질문수

질문하기