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