[英]How to make sklearn.metrics.confusion_matrix() to always return TP, TN, FP, FN?
我正在使用sklearn.metrics.confusion_matrix(y_actual, y_predict)
來提取tn,fp,fn,tp,並且大部分時間它都能完美地運行。
from sklearn.metrics import confusion_matrix
y_actual, y_predict = [1,1,1,1], [0,0,0,0]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel()
>>> [0 0 4 0] # ok
y_actual, y_predict = [1,1,1,1],[0,1,0,1]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel()
>>> [0 0 2 2] # ok
但是,在某些情況下,confusion_matrix()並不總是返回這些信息,我會得到ValueError,如下所示。
from sklearn.metrics import confusion_matrix
y_actual, y_predict = [0,0,0,0],[0,0,0,0]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel()
>>> [4] # ValueError: not enough values to unpack (expected 4, got 1)
y_actual, y_predict = [1,1,1,1],[1,1,1,1]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict).ravel()
>>> [4] # ValueError: not enough values to unpack (expected 4, got 1)
我的臨時解決方案是編寫自己的函數來提取這些信息。 有什么方法可以強制confusion_matrix()
總是返回tn,fp,fn,tp輸出?
謝謝
此問題與輸入矩陣中包含的唯一標簽數有關。 在你的第二個例子中,它(正確地)構建一個只有一個類的混淆矩陣,分別為0或1。
要強制它輸出兩個類,即使沒有預測其中一個類,也要使用label
屬性。
y_actual, y_predict = [0,0,0,0],[0,0,0,0]
tn, fp, fn, tp = confusion_matrix(y_actual, y_predict, labels=[0,1]).ravel()
>> array([[4, 0],
[0, 0]])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.