繁体   English   中英

具有阈值 python 的混淆矩阵

[英]confusion matrix with threshold python

如果将阈值在 [0.5,0.6,0.9] 之间更改一次 0.5 和一次 0.6 等等,如何打印逻辑回归的混淆矩阵

from sklearn.linear_model import LogisticRegression
import pandas as pd  
import numpy as np  
import matplotlib.pyplot as plt  

X = [[0.7,0.2],[0.9,0.4]]
y = [1,-1]

model = LogisticRegression()
model = model.fit(X,y)

threshold = [0.5,0.6,0.9]

CM = confusion_matrix(y_true, y_pred)

TN = CM[0][0]
FN = CM[1][0]
TP = CM[1][1]
FP = CM[0][1]

我认为伪代码(基于python)的一种简单方法是:

1 - 预测一组已知值 (X) y_prob = model.predict_proba(X)因此您将获得 X 中每个输入的概率。

2 - 然后为每个阈值计算 output。 即如果 y_prob > 阈值 = 1 否则 0

3 - 现在得到每个向量的混淆矩阵。

如果您需要对任何一点进行更深入的解释,请告诉我!

让我们试试这个!

for i in threshold:
   y_predicted = model.predict_proba(X)[:1] > i
   print(confusion_matrix(y, y_predicted))

predict_proba() 返回一个包含两列的 numpy 数组。 第一列是目标 = 0 的概率,第二列是目标 = 1 的概率。 这就是为什么我们在 predict_proba() 之后添加 [:,1] 以获得 target=1 的概率

def predict_y_from_treshold(model,X,treshold):  
    return np.array(list(map(lambda x : 1 if x > treshold else 0,model.predict_proba(X)[:,1])))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM