ROC AUC에 근거하여 ROC를 반환 할 수 있습니다에만 유용합니다. .predict()
을 사용하면 각 샘플에 대해 가장 가능성이 높은 클래스를 제공하기 때문에 순위 순서를 수행 할 수 없습니다.
아래 예에서 임의로 생성 된 데이터 세트에 임의의 포리스트를 맞춰 보류 된 샘플에서 테스트했습니다. 청색 선은 .predict_proba()
을 사용하여 수행 한 올바른 ROC 곡선을 표시하고 녹색은 .predict()
으로 축퇴 한 것을 보여줍니다. 여기서 하나의 컷오프 점만 알고 있습니다.
from sklearn.datasets import make_classification
from sklearn.metrics import roc_curve
from sklearn.ensemble import RandomForestClassifier
from sklearn.cross_validation import train_test_split
rf = RandomForestClassifier()
data, target = make_classification(n_samples=4000, n_features=2, n_redundant=0, flip_y=0.4)
train, test, train_t, test_t = train_test_split(data, target, train_size=0.9)
rf.fit(train, train_t)
plt.plot(*roc_curve(test_t, rf.predict_proba(test)[:,1])[:2])
plt.plot(*roc_curve(test_t, rf.predict(test))[:2])
plt.show()

편집 : .predict()
에 roc_auc_score()
을 계산에서 당신을 중지 아무것도 없지만, 위의 점은 정말 유용한 측정이 아니다는 것이다.
In [5]: roc_auc_score(test_t, rf.predict_proba(test)[:,1]), roc_auc_score(test_t, rf.predict(test))
Out[5]: (0.75502749115010925, 0.70238005573548234)
ROC AUC는 예측 순서를 정할 수있는 경우에만 유용합니다. '.predict()'를 사용하면 각 샘플에 대해 가장 가능성이 높은 클래스를 제공하기 때문에 순위 순서를 수행 할 수 없습니다. –