今天是生信星球陪你的第1001天
公众号里的文章大多数需要编程基础,如果因为代码看不懂,而跟不上正文的节奏,可以来找我学习,相当于给自己一个新手保护期。我的课程都是循环开课,点进去咨询微信↓
生信分析直播课程(每月初开一期,春节休一个月)
生信新手保护学习小组(每月两期)
单细胞陪伴学习小组(每月两期)
1.逻辑回归
逻辑回归用于分类问题,输出结果是概率
如果概率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也有阈值。如果改变阈值会发生什么?
2.ROC曲线
随着阈值的变化,混淆矩阵的每个数值都在发生变化,那么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