2016-03-20 30 views
0

88 farklı konuya ayırdığım 22465 test belgesine sahibim. En çok tahmin edilen 5 konuya ulaşmak için predict_proba kullanıyorum. Bu 5 konunun hassasiyetini nasıl yazdırabilirim?En iyi 5 konunun hassasiyetini sınıflandırıcım aracılığıyla nasıl alabilirim?

model1 = LogisticRegression() 
model1 = model1.fit(matrix, labels) 

y_train_pred = model1.predict_log_proba(matrix_test) 
order=np.argsort(y_train_pred, axis=1) 
print(order[:,-5:]) #gives top 5 probabilities 

n=model1.classes_[order[:, -5:]] 

Doğruluk için

z=0 
for x, y in zip(label_tmp_test, n): 
    if x in y: 
     z=z+1 
print(z) 
print(z/22465) #This gives me the accuracy by considering top 5 topics 

nasıl aynı şekilde ilk 5 konuların hassasiyeti bulabilirsiniz:

doğruluk için, bu yapıyorum nedir? Scikit metrikler hassas neredeyse aynıdır metodoloji

q=model1.predict(mat_tmp_test) 
print(metrics.precision_score(n, q)) 

cevap

0

ile çalışmak reddediyor - (hassas başına etiket metrik olduğu gibi) sadece belirli bir etiketin üzerinde durulacak, etiket L için hassas hesaplamak Diyelim:

TP = 0. 
FP = 0. 
for x, y in zip(label_tmp_test, n): 

    if x == L: # this is the label we are interested in 
     if L in y: # correct prediction is among selected ones 
      TP = TP + 1 # we get one more true positive instance 

    else: # this is some other label 
     if L in y: # if we predicted that this is a particular label 
      FP = FP + 1 # we have created another false positive 

print(TP/(TP + FP)) 

Şimdi "genel" hassasiyete ihtiyacınız varsa, genellikle etiket başına kesinliği ortalaması alırsınız. Belli sebeplerden dolayı, bu tür önlemler için çok fazla etikete ihtiyacınız vardır.