0

我正在訓練邏輯迴歸分類模型,並試圖利用混淆矩陣結果進行比較,並計算精度,召回,下面precision_recall_fscore_support的準確度,精密度返回相同的價值觀和召回

# logistic regression classification model 
clf_lr = sklearn.linear_model.LogisticRegression(penalty='l2', class_weight='balanced') 
logistic_fit=clf_lr.fit(TrainX, np.where(TrainY >= delay_threshold,1,0)) 
pred = clf_lr.predict(TestX) 

# print results 
cm_lr = confusion_matrix(np.where(TestY >= delay_threshold,1,0), pred) 
print("Confusion matrix") 
print(pd.DataFrame(cm_lr)) 
report_lr = precision_recall_fscore_support(list(np.where(TestY >= delay_threshold,1,0)), list(pred), average='micro') 
print ("\nprecision = %0.2f, recall = %0.2f, F1 = %0.2f, accuracy = %0.2f\n" % \ 
      (report_lr[0], report_lr[1], report_lr[2], accuracy_score(list(np.where(TestY >= delay_threshold,1,0)), list(pred)))) 
print(pd.DataFrame(cm_lr.astype(np.float64)/cm_lr.sum(axis=1))) 

show_confusion_matrix(cm_lr) 
#linear_score = cross_validation.cross_val_score(linear_clf, ArrX, ArrY,cv=10) 
#print linear_score 

精度 代碼給出預期結果

Confusion matrix 
     0  1 
0 4303 2906 
1 1060 1731 

precision = 0.37, recall = 0.62, F1 = 0.47, accuracy = 0.60 

      0   1 
0 0.596893 1.041204 
1 0.147038 0.620208 

但是我的輸出是

Confusion matrix 
     0  1 
0 4234 2891 
1 1097 1778 

precision = 0.60, recall = 0.60, F1 = 0.60, accuracy = 0.60 

      0   1 
0 0.594246 1.005565 
1 0.153965 0.618435 

如何獲得正確的結果?

回答

1

在像你這樣的「二元」情況下(2類),你需要使用average ='binary'而不是average ='micro'。

例如:

TestY = [0, 1, 1, 0, 1, 1, 1, 0, 0, 0] 
pred = [0, 1, 1, 0, 0, 1, 0, 1, 0, 0] 
# print results 
cm_lr = metrics.confusion_matrix(TestY, pred) 
print("Confusion matrix") 
print(pd.DataFrame(cm_lr)) 
report_lr = metrics.precision_recall_fscore_support(TestY, pred, average='binary') 
print ("\nprecision = %0.2f, recall = %0.2f, F1 = %0.2f, accuracy = %0.2f\n" % \ 
      (report_lr[0], report_lr[1], report_lr[2], metrics.accuracy_score(TestY, pred))) 

和輸出:

Confusion matrix 
    0 1 
0 4 1 
1 2 3 

precision = 0.75, recall = 0.60, F1 = 0.67, accuracy = 0.70 

二進制具有默認定義的哪些類是積極的(與1個標籤類)。 您可以閱讀此link中所有平均選項之間的差異。

+0

完美! ...................... – Ani