inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

4회 기출 유형(작업형2)

4회 기출 유형(작업형2) 문제 풀이 과정 중에 질문드립니다.

해결된 질문

1252

아함

작성한 질문수 3

0

안녕하세요!

4회 기출 유형(작업형2) 문제 풀이 과정 중에 에러가 발생하여 질문 드립니다.

이전까지 하던 대로 train_test_split을 통해 데이터를 분리해서 진행을 하였는데요

from sklearn.model_selection import train_test_split
x_tr, x_val, y_tr, y_val = train_test_split(train.drop('Segmentation', axis = 1),
                                            train['Segmentation'],
                                            test_size = 0.1,
                                            random_state = 2023)
x_tr.shape, x_val.shape, y_tr.shape, y_val.shape
from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators = 400, max_depth = 9, random_state = 2023)
rf.fit(x_tr, y_tr)
pred = rf.predict_proba(x_val)
from sklearn.metrics import roc_auc_score
roc_auc_score(y_val, pred, multi_class = 'ovo')
pred = rf.predict_proba(test)
submit = pd.DataFrame(
    {
        'ID' : test_id,
        'Segmentation': pred
    })
ValueError: Per-column arrays must each be 1-dimensional

위와 같은 에러 메시지가 뜹니다!

이리 저리 만져봐도 잘 모르겠네요 ㅠㅠ

어떻게 하면 될까요?

python 머신러닝 빅데이터 pandas 빅데이터분석기사

답변 2

0

아함

pred = rf.predict_proba(test[:,1])

InvalidIndexError: (slice(None, None, None), 1)

알려주신 내용을 입력하니,

위와같은 에러가 발생하여서 원래대로 진행하였고,

pred = rf.predict_proba(test)
pd.DataFrame({'ID': test_id, 'Segmentation': pred[:,1]}).to_csv('000000.csv', index = False)

이렇게 dataframe을 만들 때 'pred'에다가 [:,1]을 넣어 진행하니까 오류는 안뜨네요.

그런데 모델링할 때는 pred[:,1] 없이 pred로만 진행해도 에러가 없었는데, 왜 오류가 생겼는지 이유를 잘 모르겠습니다. 왜 마지막 데이터프레임을 만들때만 [:,1]을 넣었는데 됐는지도 모르겠구요 ㅠㅠ

 

 

0

퇴근후딴짓

  1. Model.predict로 예측할 때와

  2. Model.predict_proba로 예측할 때

결과값이 다릅니다.

2.는 확률값을 예측합니다. 만약 타겟(레이블)에 0과 1이 있다면 0일 확률과 1일 확률을 반환합니다. 평가지표가 roc_auc일 때 predict_proba를 활용해요!

1과 2 둘다 실행해서 pred값을 한번 출력해서 눈으로 확인 부탁해요

0

아함

from sklearn.ensemble import RandomForestClassifier
rf = RandomForestClassifier(n_estimators = 400, max_depth = 9, random_state = 2023)
rf.fit(x_tr, y_tr)
pred = rf.predict(x_val)

rf.predict로만 진행하면 위와 같이 되고, 결과값은 아래와 같이 나옵니다.

pred
array([2, 4, 3, 1, 4, 1, 2, 4, 3, 3, 1, 4, 4, 4, 3, 1, 2, 3, 2, 4, 2, 1,
       4, 4, 3, 1, 1, 2, 2, 4, 1, 3, 4, 4 4, 2,

다만, 이 상태에서는 roc_auc_score가 실행이 안되네요

from sklearn.metrics import roc_auc_score
roc_auc_score(y_val, pred, multi_class = 'ovo')

AxisError: axis 1 is out of bounds for array of dimension 1
from sklearn.metrics import roc_auc_score
roc_auc_score(y_val, pred[:,1], multi_class = 'ovo')

IndexError: too many indices for array: array is 1-dimensional, but 2 were indexed

선생님 혹시 해당 데이터의 예측값이 1, 2, 3, 4인 것과 관계 있을까요?

제출 형식:
ID,Segmentation
458989,1
458994,2
459000,3
459003,4

 

0

퇴근후딴짓

기출유형 4 다중분류였네요

제가 모바일로 답변하느라 문제를 제대로 보질 못했습니다.

predict이 아닌 predict_proba로 예측해 주세요!

그리고 다중분류니 roc_auc를 평가할 때 pred그대로 넣어주면 됩니다.

다시 한번 해보고 안되면 댓글주세요 :)

 

0

퇴근후딴짓

test에 0확률과 1확률이 있어요

1 확률을 선택해야합니다

pred = rf.predict_proba(test[:,1])

 

작업형 1 유형 부분

0

13

1

작업형 1 (삭제예정, 구 버전)

0

32

2

수강기간 연장 문의드립니다.

0

21

1

2유형 레이블 인코딩 VS 원핫 인코딩

0

24

3

수강기간 연장 문의드립니다.

0

26

1

인덱스 슬라이싱

0

27

2

질문 드립니다.

0

45

2

강의 내용 관련 질문드립니다~

0

43

2

수강 연장 문의

0

56

2

강의자료 일괄 다운로드

0

50

2

수강기간 연장 문의드립니다

0

41

2

list 문제 질문드립니다~

0

35

2

빅분기 실기 12회 재도전

0

54

2

강의 기간 연장 가능여부 검토 요청건

0

39

2

수강기간 연장 문의 드립니다

0

43

2

수강기간 연장 문의드립니다

0

50

2

질문이요

0

56

2

수강기간 연장 문의드립니다.

0

58

2

문제 3-2 질문드립니다

0

47

2

수강기간 연장 문의 드립니다.

0

61

2

변수, 칼럼 , df 구분

0

51

2

수강기간 연장 문의드립니다.

0

50

2

수강기간 연장 문의

0

49

2

수강기간 연장 문의드립니다.

0

42

2