娃感冒了,把我传染了,他好了,我还没好O(∩_∩)O,请了两天直播课的假,带娃也被妈妈和老公全权承包,当了两天幸福的废物。今天开始复工复产咯,小朋友们珍惜你们的假期,明天还剩最后一天咯。
逻辑回归用于分类问题,输出结果是概率
如果概率p>0.5,则模型预测数据标签为1
如果概率p<0.5,则模型预测数据标签为0
(代码接上一篇)
from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,random_state=42)
logreg.fit(X_train, y_train)
y_pred = logreg.predict(X_test)
y_pred_probs = logreg.predict_proba(X_test)[:, 1]
print(y_pred_probs[0])
0.20665323740381789
概率的阈值时0.5 , 不特定于逻辑回归,KNN也有阈值。如果改变阈值会发生什么?
随着阈值的变化,混淆矩阵的每个数值都在发生变化,那么TPR和FPR也在变化,所以可以画出一条曲线。
#ROC曲线
from sklearn.metrics import roc_curve
import matplotlib.pyplot as plt
fpr, tpr, thresholds = roc_curve(y_test, y_pred_probs)
plt.plot([0, 1], [0, 1], 'k--')
plt.plot(fpr, tpr)
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Logistic Regression ROC Curve')
plt.show()
from sklearn.metrics import roc_auc_score
print(roc_auc_score(y_test, y_pred_probs))
0.668060272519064