1

두 개의 목록이 있습니다. "A"는 예상 목록 목록이 들어있는 목록의 목록입니다. "B"는 목록의 목록이며, 각 항목 포함 된 사실 태그정밀도, 회상, f y_pred와 y_true의 크기가 다른 경우의 점수

내가 사용 점수 f를, 정밀, 리콜을 계산하기 위해 노력하고있어 반복에서 scikit이 배우기, A는 [내가] B에 비해 [I]하지만

ValueError를 말한다 : 일관성이 발견 입력 변수 샘플 수 : [3, 2]

비슷한 주제가 있지만 답변이 없습니다 Computing precision and recall for two sets of keywords in NLTK and Scikit for sets of different sizes

+0

는 precision_score '의'average' 인자를 전달하는()'또는'recall_score()'같이 여기에 설명 된 (http://scikit-learn.org/stable/modules/generated/sklearn. multibel 분류에 대한 metrics.precision_score.html)? –

답변

1

크기와 정확도가 같아야합니다 (y_truey_pred). y_true[i]y_pred[i] 크기가 다를 수 있습니다. 설명서에서 precision_score()recall_score()을 확인하십시오. 이러한 메서드에서 유효한 값을 average 인수로 전달해야합니다.

멀티 라벨 분류 점수 지정 기술에 대한 자세한 내용은 this page을 확인하십시오.

: 의견에서 예제 데이터를 취하는 코드를 추가했습니다.

먼저 데이터의 사용 가능한 모든 레이블에 대해 y_truey_pred을 핫스왑해야합니다.

from sklearn.preprocessing import MultiLabelBinarizer 
from sklearn.metrics import recall_score, precision_score 

A=[['a','b','c'],['d','e','f','g']] 
B=[['a','b'],['d','f','g']] 

multibinarizer = MultiLabelBinarizer() 

A_new = multi.fit(A).transform(A) 
B_new = multi.transform(B) 

#average = 'valid strategy for multilabel 
precision_score(A_new,B_new,average='samples') 
#output -> 1.0 
recall_score(A_new, B_new, average='samples') 
#output -> 0.70833333333333326 
0

이러한 측정 항목을 계산할 때 실제 값과 예상 값을 비교합니다. 따라서 테스트 세트에 10 개의 데이터 포인트가있는 경우 모델에서 예측이 10 개 발생해야합니다.

TL : DR A [i]는 B [i]와 차원 적으로 일치해야합니다.

데이터가 어떻게 표시되는지 예를 포함 시키면 내 답변을보다 정확하게 편집 할 수 있습니다!

+0

내 데이터는 A = [[ 'a', 'b', 'c'], [ 'd', 'e', ​​'f', 'g']]와 B = [[ 'a' 'b'], [ 'd', 'f', 'g']] B 항목은 항목, 정밀도, 회수율 및 fscore 수식에 대한 예측 태그이므로 두 세트가 같은 크기가 아닌 경우에도 계산할 수 있습니다. – vatob

+0

예측과 지상 진실은 1 : 1 매핑을 알고 있습니다. 사용 사례가 무엇인지 확실하지 않습니다. –

+0

태그 예측 응답 시스템에서 태그 매핑이 없다고 생각합니다. – vatob