[英]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.