2014-07-08 4 views
1

나는 바이너리 분류 프로젝트에 대해 sklearn을 사용하여 정확도와 리콜을 계산하고 있습니다.sklearn.metrics.precision_recall_fscore_support의 출력 해석

scores = cross_validation.cross_val_score(clf, numpy.asarray(X_features), numpy.asarray(Y_targets), \ 
          cv = 5, score_func = metrics.metrics.precision_recall_fscore_support) 

내가 사용하고 채점 기능은 metrics.metrics.precision_recall_fscore_support입니다.

부분 출력은 아래와 같다 :

[[[ 0.95652174 1.  ] 
    [ 1.   0.95348837] 
    [ 0.97777778 0.97619048] 
    [ 44.   43.  ], ......] 

첫 행 정밀도이며, 두 번째 행은 회수된다. 하지만 이진 분류이기 때문에 어떤 열이 "0"클래스이고 "1"클래스가 맞는지 궁금합니다. 다중 분류 인 경우 (예 : "0", "1", "2", sklearn은 출력에서 ​​클래스를 어떻게 정렬합니까?

답변

2

fit()을 사용하면 분류 기준 모델의 classes_ 속성 (예 : my_model.classes_)을 통해 동일한 순서로 해당 클래스를 가져올 수 있습니다.

귀하의 경우 사용할 수 없으므로 numpy.unique (Y_targets) => 사용은 동일한 내부 메소드이므로 동일한 순서로 사용됩니다.

+0

"clf.classes_"를 시도했지만 "AttributeError : 'SVC'객체에 'classes_'속성이 없습니다." 어쩌면 이것은 특별한 경우 일 것입니다. – Munichong

+0

fit()을 사용할 때 초기화되지만 cross_val_score를 사용할 때는 초기화되지 않습니다. 어쨌든, scikit에서 사용하는 내부 메소드를 사용할 수 있으며, 그 순서는 다음과 같습니다. numpy.unique (Y_targets) – doxav