다중 레이블 데이터 세트가 있고 교차 유효성 검사 테스트로 각 레이블의 F- 점수 값을 결정하고 싶습니다. sklearn 또는 skmultilearn에 구현 된 예제 코드가 있습니까? 그 문서는 전체 데이터 세트에 대해서만 가치를 제공하는 것으로 보입니다.다중 레이블 분류의 교차 유효성 검사를 통해 개별 레이블의 F- 점수를 계산하십시오.
0
A
답변
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. ])
감사의 배열을 예를 참조. 하지만 내가 정말로 물어 본 것은 멀티 라벨 데이터가 아니라 멀티 라벨 데이터 (각 라벨의 바이너리 클래스 데이터가있는 다중 출력 (라벨))에 관한 것입니다. 따라서 교차 유효성 검사 점수를 결정하기위한 입력은 다중 레이블 데이터 세트의 X, y (레이블 출력 세트) 여야합니다. score = cross_val_score (model, X, y, cv = 10, scoring = 'f1_weighted')를 사용하면 전체 데이터 세트의 점수가 반환됩니다. 각 개별 레이블에 대해 점수를 얻을 수있는 방법이 있습니까? – user3464608
내가 볼 수있는 유일한 방법은 y의 각 열, 즉 각 레이블 집합에서 교차 유효성 검사를 사용하는 것입니다. range (y.shape [1])])에있는 i에 대해'np.vstack ([model, X, y [:, i], cv = 10, scoring = 'f1')과 같은 것입니다. 그러면 n_label x 10 모양의 배열 – sgDysregulation