首页 > 解决方案 > 逻辑回归预测阈值误差

问题描述

我正在使用逻辑回归将二元变量设置阈值预测为 0.60。模型的准确性给了我一个错误

我使用predict_proba()将阈值设置为 .60,但是当我试图找到模型的准确性时,它给了我错误:

'bool' 和 'str' 的实例之间不支持 '<'

X=df[["age",  "breed"]]
y=df["animal"]

from sklearn.model_selection import train_test_split
X_train1,X_test1,y_train1,y_test1=train_test_split(X,y,test_size=0.30,random_state=0)

# import the class
from sklearn.linear_model import LogisticRegression


model = LogisticRegression(class_weight="balanced")
model.fit(X_train1, y_train1)


preds = (model4.predict_proba(X_test1)[:,1] >= 0.60)
print(preds)
#from sklearn import metrics
#print(" Prediction Accuracy:",metrics.accuracy_score(y_test1, prediction4))
#from sklearn.metrics import accuracy_score
dat= accuracy_score(y_test1, preds)
print(dat)

pred 的输出是 [False False False ... True True False]

标签: python

解决方案


问题是它y_train1也不包含布尔数组。检查df["animal"]系列中的内容并确定哪个类是肯定的(例如,如果它被填充,'dog'那么下面'cat'的代码片段将起作用,假设“猫”为真):

dat= accuracy_score(y_test1=="cat", preds)

您可以使用classes_逻辑回归模型 ( model.classes_) 上的属性来查看'cat'or'dog'是否分配给 0 或 1


推荐阅读