网站首页 > 博客文章 正文
上一篇介绍了 Logistic 回归模型的理论和“泰坦尼克号生还预测”的特征工程部分,更多详细内容可以查看文章《Python机器学习理论与实战 第二章 Logistic 回归模型(上)》,本篇继续介绍模型建立和模型评估部分。
建立预测模型
主要包括以下步骤:
数据标准化
使得预测结果不会被某些维度中过大的特征值而主导
训练模型参数
fit( )函数/模块
对测试集数据进行预测
predict( )函数/模块
predict_proba ( )函数/模块
数据标准化
标准化数据,Z-Score方法,保证每个维度的特征数据方差为1,均值为0。使得预测结果不会被某些维度中过大的特征值而主导。
# 从sklearn.preprocessing里导入StandardScaler from sklearn.preprocessing import StandardScaler
# 标准化数据,保证每个维度的特征数据方差为1,均值为0。使得预测结果不会被某些维度中过大的特征值而主导 ss = StandardScaler() LR_train = ss.fit_transform(X_train) LR_test = ss.transform(X_test)
模型训练
# 从sklearn.linear_model里导入LogisticRegression from sklearn.linear_model import LogisticRegression
# 初始化LogisticRegression lr = LogisticRegression() # 调用LogisticRegression中的fit函数/模块用来训练模型参数 lr.fit(LR_train, y_train)
模型预测
# 使用训练好的模型lr对LR_test进行预测,结果储存在变量lr_y_predict中 lr_y_predict = lr.predict(LR_test) #返回概率 lr_y_predict_proba = lr.predict_proba(LR_test)
模型性能评估
主要使用准确性 Accuracy,召回率Recall,精确率Precision,F1值,以及 ROC 曲线和 AUC 值作为模型性能评价指标。
分类结果
评价指标的计算
ROC曲线
ROC 曲线的全称为“接受者操作特性曲线” (receiver operating characteristic)。
模型预测的结果是得到每一个样本的响应变量取1的概率,为了得到分类结果,需要设定一个阈值 p0,当 p 大于 p0 时,认为该样本的响应变量为 1,否则为 0。阈值大小对模型的预测效果有较大影响。
TPR:True Positive Rate(Recall),将实际的 1 正确地预测为1的概率,TPR=d/(c+d)
FPR:False Positive Rate,将实际的 0 错误地预测为1的概率,FPR=b/(a+b)
TPR与FPR相互影响,而我们希望能够使 TPR 尽量地大,而 FPR 尽量地小。影响 TPR 与 FPR 的重要因素就是“阈值” p0 。当阈值为0时,所有的样本都被预测为正例,因此 TPR=1,而 FPR=1。此时的 FPR 过大,无法实现分类的效果。随着阈值逐渐增大,被预测为正例的样本数逐渐减少,TPR 和 FPR各自减小,当阈值增大至 1 时,没有样本被预测为正例,此时 TPR=0,FPR=0。
TPR 与 FPR 存在同方向变化的关系(这种关系一般是非线性的),即,为了提升 TPR(通过降低阈值),意味着 FPR也将得到提升,两者之间存在类似相互制约的关系。希望能够在牺牲较少 FPR 的基础上尽可能地提高 TPR,由此画出ROC曲线。
当预测效果较好时,ROC曲线凸向左上角的顶点。平移图中对角线,与 ROC 曲线相切,可以得到 TPR 较大而 FPR 较小的点。模型效果越好,则ROC曲线越远离对角线,极端的情形是 ROC 曲线经过(0,1)点,即将正例全部预测为正例而将负例全部预测为负例。ROC曲线下的面积可以定量地评价模型的效果,记作 AUC,AUC 越大则模型效果越好。
准确性Accuracy/召回率Recall/精确率Precision/F1 Measure
# 从sklearn.metrics里导入classification_report模块 from sklearn.metrics import classification_report # 使用逻辑斯蒂回归模型自带的评分函数score获得模型在测试集上的准确性结果 print ('Accuracy of LR Classifier:', lr.score(LR_test, y_test)) # 利用classification_report模块获得LogisticRegression其他三个指标的结果 print (classification_report(y_test, lr_y_predict, target_names=['Not Survived','Survived']))
计算结果
ROC曲线和 AUC
from sklearn.metrics import roc_curve
import numpy as np
y = np.array(y_test)
pred = np.array(lr_y_predict_proba[:,1])
fpr, tpr, thresholds = roc_curve(y, pred)
from sklearn.metrics import auc
roc_auc = auc(fpr, tpr)
print('AUC of LR Classifier:',auc(fpr, tpr))
plt.title('Receiver Operating Characteristic')
plt.plot(fpr, tpr, 'b',label='AUC = %0.2f'% roc_auc)
plt.legend(loc='lower right')
plt.plot([0,1],[0,1],'r--')
plt.xlim([0,1.0])
plt.ylim([0,1.0])
plt.ylabel('True Positive Rate')
plt.xlabel('False Positive Rate')
plt.show()
AUC of LR Classifier: 0.863317191283
ROC曲线
对于结果我就不做过多解释了,总体来说效果还可以,但是也存在很大的改进空间,未来我们将在特征工程和模型融合方面做一些更深入的探索,以提高模型的精度。
- 上一篇: R数据分析:ROC曲线与模型评价实例
- 下一篇: 模型评估(一)(你应该知道的模型评估的五个方法)
猜你喜欢
- 2024-10-29 模型评估(一)(你应该知道的模型评估的五个方法)
- 2024-10-29 精度是远远不够的:如何最好地评估一个分类器?
- 2024-10-29 R数据分析:ROC曲线与模型评价实例
- 2024-10-29 模型评估与模型监控——AUC 计算示例
- 2024-10-29 为机器学习模型选择正确的度量评估(第二部分)
- 2024-10-29 从另外一个角度解释AUC(从另一个角度去看问题)
- 2024-10-29 机器学习算法评估方法+Spring学习笔记
- 2024-10-29 你真的了解模型评估与选择嘛(模型评价的术语)
- 2024-10-29 机器学习中的评价指标(机器学习模型的评价指标有哪些)
- 2024-10-29 python机器学习:分类问题学习模型的评价方法及代码实现
你 发表评论:
欢迎- 06-23MySQL合集-mysql5.7及mysql8的一些特性
- 06-23MySQL CREATE TABLE 简单设计模板交流
- 06-23MYSQL表设计规范(mysql设计表注意事项)
- 06-23MySQL数据库入门(四)数据类型简介
- 06-23数据丢失?别慌!MySQL备份恢复攻略
- 06-23MySQL设计规范(mysql 设计)
- 06-23MySQL数据实时增量同步到Elasticsearch
- 06-23MySQL 避坑指南之隐式数据类型转换
- 最近发表
- 标签列表
-
- powershellfor (55)
- messagesource (56)
- aspose.pdf破解版 (56)
- promise.race (63)
- 2019cad序列号和密钥激活码 (62)
- window.performance (66)
- qt删除文件夹 (72)
- mysqlcaching_sha2_password (64)
- ubuntu升级gcc (58)
- nacos启动失败 (64)
- ssh-add (70)
- jwt漏洞 (58)
- macos14下载 (58)
- yarnnode (62)
- abstractqueuedsynchronizer (64)
- source~/.bashrc没有那个文件或目录 (65)
- springboot整合activiti工作流 (70)
- jmeter插件下载 (61)
- 抓包分析 (60)
- idea创建mavenweb项目 (65)
- vue回到顶部 (57)
- qcombobox样式表 (68)
- vue数组concat (56)
- tomcatundertow (58)
- pastemac (61)
本文暂时没有评论,来添加一个吧(●'◡'●)