python - 逻辑回归预测阈值误差
问题描述
我正在使用逻辑回归将二元变量设置阈值预测为 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]
解决方案
问题是它y_train1
也不包含布尔数组。检查df["animal"]
系列中的内容并确定哪个类是肯定的(例如,如果它被填充,'dog'
那么下面'cat'
的代码片段将起作用,假设“猫”为真):
dat= accuracy_score(y_test1=="cat", preds)
您可以使用classes_
逻辑回归模型 ( model.classes_
) 上的属性来查看'cat'
or'dog'
是否分配给 0 或 1