阈值python的混淆矩阵

时间:2019-10-07 10:58:56

标签: python scikit-learn

如果将阈值更改为[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]

3 个答案:

答案 0 :(得分:1)

让我们试试吧!

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

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

答案 1 :(得分:0)

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

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

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

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

如果您在任何方面需要更深入的说明,请告诉我!

答案 2 :(得分:0)

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])))