해결된 질문
작성
·
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
model.fit(X_train, y_train['gender']) : 모델은 X_train을 사용하여 y_train['gender']에 해당하는 타겟 (레이블) 정보를 학습하게 됩니다. 학습된 모델이 만들어집니다.
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일 확률을 얻을 수 있어요.
model.predict_proba()
결과를 프린트 문으로 한 번 출력해보실래요?
[0.3, 0.7]
[0.2, 0.8]
이런식으로 나올거에요
앞에 0.3 0.2가 0확률
뒤에 0.7 0.8이 1확률입니다
답변 감사합니다! 근데 추가로 궁금한게 있는데요.. 저걸로 하면 남자일 확률이잖아요
여자일 확률을 구하려면 model.fit(X_train, 1 - y_train['gender']) 이렇게 해야되나요?