이 코드는 다음 배열을 반환합니다.
array([[1.52213484e-12, 3.85303417e-04, 9.99614697e-01],
[9.93560717e-01, 6.43928295e-03, 1.14112016e-15],
[9.98655228e-01, 1.34477208e-03, 1.76178271e-17]])
첫 번째 행은 첫 번째 붓꽃의 클래스 소속 확률입니다. 두 번째 행은 두 번째 꽃의 클래스 소속 확률에 해당합니다. 당연하지만 열을 모두 더하면 1이 됩니다(lr.predict_proba(X_test_std[:3, :]).sum(axis=1) 코드를 실행해서 확인할 수 있습니다).
첫 번째 행에서 가장 큰 값은 대략 0.999 정도입니다. 첫 번째 샘플이 클래스 3(Iris-virginica)에 속할 확률이 99.9%라는 뜻입니다. 눈치챘을지 모르지만 행에서 가장 큰 값의 열이 예측 클래스 레이블이 됩니다. 예를 들어 넘파이 argmax 함수를 사용하면 다음과 같이 씁니다.
>>> lr.predict_proba(X_test_std[:3, :]).argmax(axis=1)
출력된 클래스 인덱스는 다음과 같습니다(각각 Iris-virginica, Iris-setosa, Iris-setosa에 해당합니다).
array([2, 0, 0])
이전 코드에서 조건부 확률을 계산하고 넘파이 argmax 함수를 사용하여 직접 클래스 레이블로 바꾸었습니다. 실제 사이킷런을 사용할 때는 predict 메서드를 직접 호출하여 훨씬 손쉽게 클래스 레이블을 얻습니다.
>>> lr.predict(X_test_std[:3, :])
array([2, 0, 0])