답변

3

당신은 scikit - 학습의 분류 보고서를 사용할 수 있습니다, 당신은 y를 y_predict이

from sklearn.metrics import classification_report 
y = [0, 1, 2, 2, 2] 
y_pred = [1, 0, 2, 2, 1] 
classes = {'Banana':0,'Apple':1,'Orange':2} 
print(classification_report(y, y_pred,target_names=classes.keys())) 

출력 또는

   precision recall f1-score support 

    Banana  0.00  0.00  0.00   1 
     Apple  0.00  0.00  0.00   1 
    Orange  1.00  0.67  0.80   3 

avg/total  0.60  0.40  0.48   5 

당신이

print(f1_score(y, y_pred,average=None)) 

사용할 수 있다고 가정하면 얻을 것이다 목록의 레이블 점수는

입니다. 17,451,515,
[ 0. 0. 0.8] 

물론 당신은 KFolds iterator를 사용할 수있는 모든 주름을 통과하고 각 레이블에 대한 자신의 F1을 얻을,하지만 난 당신이 그것을 할 싶어 이유를 참조하지 말아.

크로스 유효성 검사를 사용하는 경우 점수를 사용하여 모델을 평가하고 최고를 선택하기 때문에 폴드 당 f1 점수를 얻을 수 있습니다.

from sklearn import svm, datasets 
from sklearn.model_selection import cross_val_score 
iris = datasets.load_iris() 
X, y = iris.data, iris.target 
clf = svm.SVC() 
cross_val_score(model, X, y, cv=10, scoring='f1_weighted') 

가 출력 (10)보다 스코어 배 당 1 답변

array([ 1.  , 0.93265993, 1.  , 1.  , 1.  , 
     0.93265993, 0.93265993, 1.  , 1.  , 1.  ]) 
+0

감사의 배열을 예를 참조. 하지만 내가 정말로 물어 본 것은 멀티 라벨 데이터가 아니라 멀티 라벨 데이터 (각 라벨의 바이너리 클래스 데이터가있는 다중 출력 (라벨))에 관한 것입니다. 따라서 교차 유효성 검사 점수를 결정하기위한 입력은 다중 레이블 데이터 세트의 X, y (레이블 출력 세트) 여야합니다. score = cross_val_score (model, X, y, cv = 10, scoring = 'f1_weighted')를 사용하면 전체 데이터 세트의 점수가 반환됩니다. 각 개별 레이블에 대해 점수를 얻을 수있는 방법이 있습니까? – user3464608

+0

내가 볼 수있는 유일한 방법은 y의 각 열, 즉 각 레이블 집합에서 교차 유효성 검사를 사용하는 것입니다. range (y.shape [1])])에있는 i에 대해'np.vstack ([model, X, y [:, i], cv = 10, scoring = 'f1')과 같은 것입니다. 그러면 n_label x 10 모양의 배열 – sgDysregulation