이 글은 유투브 '도움코드'의 영상을 보고 도움을 받아 작성하였음을 밝힙니다.
https://www.youtube.com/watch?v=hB_b_vgxjiw
모델을 예측하는 코드를 살펴보다가 비슷한 듯 비슷하지 않은 비슷한 코드를 마주했다.
보통 예측을 할 때는, pred = log_reg.predict(test_df) 라고 썼는데, 오늘은 log_reg_pred = log_reg.predict_proba(test_df) 라는 코드도 보게 되었다.
둘 다 sklean에서 지원되는 메소드인데, 무엇이 다를까? 둘 다 써도 되는 건가? 하나만 쓰는 건가? iris 데이터를 가지고 한번 알아보자!
predict_proba VS predict
| predict_proba() & predict()
결론부터 말하자면, predict_proba() 는 확률을, predict()은 결과 값을 나타내 준다.
우리가 모델을 만들 때, predict()을 하는 이유는, 이 모델이 X_train과 y_train을 잘 학습해서, X_test를 주고 예측해 보라고 했을 때, 잘 예측하는 지를 보기 위해서 이다.
(X_train, y_train, X_test, y_test 가 있다는 가정하에)
predict_proba()은, 각 row의 각 label마다 정확도 확률을 보여주기 때문에 어떤 label이 가장 확률이 높은 지 확인할 수 있다.
predict_proba()해서 보면, 첫번째 row의 경우, label 2의 확률(8.....)이 가장 높다. 그리고 각 row의 확률 값을 다 더하면, 확률이므로, 1이 되어야 한다. 더하는 함수는 sum(), axis=1 (행)방향으로.
argmax() 메소드를 써주면, 지정된 row, 여기서는 [:4]라고 했으므로, 각 row0번, row1번, row2번, row3번에서 가장 확률이 높았던 label 번호를 추출해준다.
순서를 다시 정리해보면, lr.precict_proba() > lr.precict_proba().sum()
그런데, 이렇게 몇 단계를 걸쳐서 구하는 방법보다. 한번에 어떤 label이 가장 확률이 높은 지를 구할 수 있는 함수가 있는데, 그게 바로 predict()이다.
predict()는 보통 pred라는 변수에 담아준 다음, 모델을 테스트 하는데, 코드는 아래와 같다.
pred = lr.predict(X_test)
'Machine Learning & Data Analytics' 카테고리의 다른 글
One-Hot Encoding, Label Encoding, Binary Encoding (0) | 2022.03.28 |
---|---|
github 데이터 파일 jupyter notebook으로 불러오기 (0) | 2022.03.27 |
What is data mining(데이터 마이닝)? (0) | 2022.02.18 |
[Jupiter Notebook] 기본적으로 자주 사용되는 마크다운 사용법 (0) | 2022.02.18 |
Data encoding (2. One-hot Encoding) (0) | 2022.02.17 |