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

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

SEO님의 프로필 이미지
SEO

작성한 질문수

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

랜덤포레스트 돌리는 과정에서 질문있습니다

해결된 질문

작성

·

215

0

안녕하세요 model.fit과 pred사이의 관계가.. 궁금해져서 질문남깁니다. 처음에 공부할 때는 아무생각 없이 따라쓰면서 'rf.fit에는 x_train, y_train['target'] 변수 두개 넣고 rf.predict에는 x_test 넣어야지' 이렇게만 생각했어요. 근데 이번에 '시험환경에 적응하기'강의에서 문제를 푸는데 궁금한것이 생겼습니다.

 

model.fit(X_train, y_train['gender']) ======1

pred = model.predict_proba(X_test)라고 하잖아요? =====2

 

이게 X_test는 이제 막 선언(2)했고(이전에 X_test에 대해 뭐 한 게 없는거 같다는 의미로요 - 뭐 한게 있으니까 결과가 저렇게 나오는거 같긴한데 말이죠,, ) 이전에 X_test와는 독립적인 X_train, y_train이 fitting(1)된건데.. 어떻게 X_test라는 변수로만 생긴 pred가 결과적으로 '남자인 확률'을 맞히게 되는건지 ..모르겠습니다.

 

이 관계를 모르니까 '남자인 확률'을 구하려고 할 때 왜 predict에 X_test['gender']가 아니고 X_test를 넣는지도 모르게 되고 말이죠 근데 결과적으로 pred 나오면 gender에 대한 prediction이 나와요(아마 y_test['gender'] 때문인듯 하지만.. )

질문이 되게 구구절절인데 요약하자면 model.fit(그리고 그 변수)와 model.prediction(그리고 그 변수)의 관계가 궁금합니다..!! 위 내용은 왜 이게 궁금해지게됐는지에 대한 과정이구요

 

제가 자체적으로 한 필기에서도 관련 내용을 못 찾겠고 어느 강의에 있을지 찾기 힘들 거 같아 질문으로 올립니다 감사합니다!

 

답변 1

1

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

  1. model.fit(X_train, y_train['gender']) : 모델은 X_train을 사용하여 y_train['gender']에 해당하는 타겟 (레이블) 정보를 학습하게 됩니다. 학습된 모델이 만들어집니다.

  2. model.predict_proba(X_test) : 학습된 모델에 새로운 데이터 X_test를 넣어 예측값을 얻습니다. X_test는 학습 데이터인 X_train과 같은 컬럼을 가지고 있어야 합니다. 그리고 model이 X_test의 성별에 대한 확률을 예측하게 됩니다.

model.fit()은 모델을 학습시키는 과정이며, model.predict() 혹은 model.predict_proba()는 학습된 모델을 바탕으로 새로운 데이터에 대한 예측값을 얻는 과정입니다.

model.predict() 는 여자 또는 남자 / 0 또는 1로 예측 결과를 얻을 수 있고
model.predict_proba()는 여자일 확률 또는 남자일 확률 / 0일 확률 또는 1일 확률을 얻을 수 있어요.

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

답변 감사합니다! 근데 추가로 궁금한게 있는데요.. 저걸로 하면 남자일 확률이잖아요

여자일 확률을 구하려면 model.fit(X_train, 1 - y_train['gender']) 이렇게 해야되나요?

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

model.predict_proba()

결과를 프린트 문으로 한 번 출력해보실래요?

[0.3, 0.7]

[0.2, 0.8]

이런식으로 나올거에요

앞에 0.3 0.2가 0확률

뒤에 0.7 0.8이 1확률입니다

SEO님의 프로필 이미지
SEO

작성한 질문수

질문하기