강의

멘토링

로드맵

Inflearn brand logo image

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

wlysh999님의 프로필 이미지
wlysh999

작성한 질문수

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

예시문제 작업형2(ver. 2023)

(체험) 제2유형 빅데이터분석기사

작성

·

50

0

아래와 같이 성별로 0/1로 나누어 표현하라고되어있는데

 

predict_proba는 확률을 구하는 문제이므로

해당 건 pred2 = (pred1 >= 0.5).astype(int)

이렇게 표현해도 괜찮은지문의드립니다.

 

 






 

 

target = train.pop('성별')

train = pd.get_dummies(train)

test = pd.get_dummies(test)

train, test = train.align(test, join='left', axis=1)

from sklearn.model_selection import train_test_split

x_tr, x_val, y_tr, y_val = train_test_split(train, target, test_size=0.2, random_state=0)

from sklearn.ensemble import RandomForestClassifier

rf = RandomForestClassifier(random_state=0)

rf.fit(x_tr, y_tr)

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

pred2 = (pred1 >= 0.5).astype(int)

submit = pd.DataFrame({'pred' : pred2})

submit.to_csv('result.csv')

ans = pd.read_csv('result.csv')

print(ans)

답변 3

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

머신러닝 새롭게 콘텐츠를 올렸는데

시청부탁드립니다.

 

정리 다시 한번 하는 것이 좋을 것 같아요 🙂

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

질문 주신 내용을 보니 약간 오해가 있으신 것 같아요.

만약 ROC-AUC가 평가 지표로 주어진 문제라면, predict_proba()를 사용해 확률값 그대로 제출하는 것이 맞습니다.

predict() 또는
predict_proba() 후 pred2 = (pred1 >= 0.5).astype(int)처럼
0과 1로 변환하여 제출하게 되면,확률의 연속성을 잃어 ROC-AUC 성능이 낮아질 수 있습니다.

따라서 평가 기준이 ROC-AUC라면, predict_proba()로 구한 두 개 컬럼 중에서
양성 클래스(1 클래스)의 확률, 즉 [:, 1] 컬럼을 그대로 제출합니다.

wlysh999님의 프로필 이미지
wlysh999
질문자

아 문제가 아래처럼 되어있어도.

ROU-AUC의 경우에는 그냥 소수점으로 답 제출하면되는건가요?

 

 

image.png

 

0

안녕하세요, 인프런 AI 인턴입니다. wlysh999님께서 질문하신 predict_proba 메소드와 0/1 예측 표현에 대해 답변 드리겠습니다.

predict_proba 메소드는 각 클래스에 속할 확률을 예측하여 반환하고, 이진 분류 문제에서 두 개의 클래스(0과 1)가 존재합니다. pred1 = rf.predict_proba(test)[:,1] 코드는 두 번째 클래스(양성 클래스, 보통 ‘1’)에 대한 확률을 반환합니다.

이 확률 값을 0/1로 변환하려면, 분류 기준을 설정해야 합니다. 일반적으로 0.5를 기준으로 하여 확률이 0.5 이상이면 1로, 그렇지 않으면 0으로 변환합니다. 이를 위해 사용하는 pred2 = (pred1 >= 0.5).astype(int) 방식은 매우 일반적인 방법이며, 문제의 요구를 충족합니다. 이 방식은 이진 분류 문제에서 통상적으로 사용되며, 양성 클래스에 대한 확률이 절반 이상일 때 해당 클래스로 분류하겠다는 의미입니다.

rf.fit(x_tr, y_tr) 함수를 통해 모델을 학습하고, predict_proba를 통해 확률을 예측한 뒤 astype(int)로 0과 1로 변환하는 것은 타당합니다.

유사한 문제와 이에 대한 답변을 유용하게 참고할 수 있는 링크는 다음과 같습니다:
- 작업형2 실기 문항 : 이 페이지에서는 머신러닝 기반 확률 예측 모델에 대한 변환과 관련된 자세한 논의가 이뤄지고 있습니다.

이와 같은 방식으로 예측된 결과를 CSV로 저장하여 제출할 수 있으며, 이는 작업형 문제 유형에 적합한 방법입니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

wlysh999님의 프로필 이미지
wlysh999

작성한 질문수

질문하기