Scikit predict_proba 출력 해석


12

파이썬에서 scikit-learn 라이브러리를 사용하고 있습니다. 아래 코드에서 확률을 예측하고 있지만 출력을 읽는 방법을 모르겠습니다.

테스트 데이터

from sklearn.ensemble import RandomForestClassifier as RF
from sklearn import cross_validation

X = np.array([[5,5,5,5],[10,10,10,10],[1,1,1,1],[6,6,6,6],[13,13,13,13],[2,2,2,2]])
y = np.array([0,1,1,0,1,2])

데이터 세트 나누기

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.5, random_state=0) 

확률 계산

clf = RF()
clf.fit(X_train,y_train)
pred_pro = clf.predict_proba(X_test)
print pred_pro

출력

[[ 1.  0.]
 [ 1.  0.]
 [ 0.  1.]]

X_test 목록에는 3 개의 배열 (6 개의 샘플이 있고 test_size = 0.5)이 있으므로 출력에도 3이 있습니다.

그러나 3 개의 값 (0,1,2)을 예측하고 있는데 왜 각 배열에서 2 개의 요소 만 가져 옵니까?

출력을 어떻게 읽습니까?

또한 y의 고유 값 수를 수정하면 출력의 열 수는 항상 y -1의 고유 카운트입니다.


CrossValidated에 오신 것을 환영합니다. 아래에서 내 답변을 보셨습니까? 문제가 해결되면 계속해서 정답으로 표시하십시오. 그렇지 않은 경우 누락 된 사항을 알려 주시면 해결해 드리겠습니다.
Ben

답변:


5

를보십시오 y_train. 입니다 array([0, 0, 1]). 이것은 스플릿이 y = 2 인 샘플을 선택하지 않았 음을 의미합니다. 따라서 모델은 클래스 y = 2가 존재한다는 것을 모릅니다.

의미있는 것을 반환하려면 더 많은 샘플이 필요합니다.

또한 출력을 해석하는 방법을 이해 하려면 문서 를 확인하십시오 .


1
맞습니다. 사용자가 설정 한 경우 y = np.array([0,2,1,0,1,2])random_state=2이제 출력의 3 열을 볼 수 있습니다
TDC

대답은 내 질문을 해결했습니다. 대단히 감사합니다. 그리고 열 순서는 어느 정도입니까? 항상 오름차순?
HonzaB

를 실행하십시오 clf.classes_. 열은 순서대로 있습니다.
Ben

이것처럼 : clf.fit(X_train,y_train).classes_?
HonzaB

1
나는 그것이 효과가 있다고 생각하지만 당신은 당신이 실행 clf.classes_ 한 후에 바로 실행할 수 있습니다clf.fit(X_train,y_train)
Ben
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.