Logistic Regression逻辑线性回归(基于diabetes数据集)

目录

介绍: 

1、Confusion Matrix:

2、ROC(Receiver Operating Characteristic) 

 一、数据处理

二、建模

三、 confusion_matrix

四、 ROC(Receiver Operating Characteristic)

介绍: 

Logistic Regression(逻辑回归)是一种用于解决分类问题的统计学习方法。它是线性回归的一种改进,主要用于处理二分类问题,也可以通过修改算法来处理多分类问题。

Logistic Regression的主要思想是通过线性回归模型的线性组合,将其映射到一个特定的函数(称为sigmoid函数)的输出范围内,从而将输入数据映射为一个概率值。sigmoid函数的输出范围为0到1之间,表示某个样本属于某个类别的概率。

Logistic Regression的训练过程是通过最大似然估计来求解模型参数。通常使用梯度下降等优化算法来最小化损失函数。在预测阶段,通过计算模型的输出概率值,并根据设定的阈值进行分类决策。

Logistic Regression具有简单、易于解释的优点,可以用于解决许多实际应用中的分类问题,如垃圾邮件过滤、信用风险评估、医学诊断等。然而,它也有一些限制,例如容易受到特征间相关性的影响,对于非线性分类问题的性能可能较差。

1、Confusion Matrix:

混淆矩阵(Confusion Matrix)是一种用于评估分类模型结果的方法。它以矩阵的形式展示了模型对样本的分类情况。

混淆矩阵的表格中有四个不同的结果:

真正类(True Positive,TP):模型正确地将正类样本分类为正类。
真负类(True Negative,TN):模型正确地将负类样本分类为负类。
假正类(False Positive,FP):模型错误地将负类样本分类为正类。
假负类(False Negative,FN):模型错误地将正类样本分类为负类。

混淆矩阵通过统计分类结果的各个类别,可以计算出许多分类模型的性能指标,如准确率、召回率、精确率和F1-Score等。通过分析混淆矩阵,可以帮助我们对分类模型的性能进行评估和改进。

 

2、ROC(Receiver Operating Characteristic) 

ROC(Receiver Operating Characteristic)是一种用于评估分类模型性能的曲线,常用于二分类问题。在Logistic回归中,ROC曲线是通过改变分类模型的阈值而绘制出来的。

ROC曲线的横坐标是分类模型的假阳性率(False Positive Rate,FPR),纵坐标是分类模型的真阳性率(True Positive Rate,TPR),也就是分类模型的灵敏度(Sensitivity)。

在Logistic回归中,模型对样本进行概率预测,然后通过设定一个阈值将概率转化为分类标签。阈值越低,模型将更多的样本预测为阳性,从而会增加假阳性的数量,降低真阳性的数量;阈值越高,模型将更少的样本预测为阳性,从而会降低假阳性的数量,增加真阳性的数量。ROC曲线通过改变这个阈值,分别计算不同阈值下的FPR和TPR,然后将这些点连接起来得到。

ROC曲线越靠近左上角,表示分类模型的性能越好,因为这意味着在较低的假阳性率下能获得较高的真阳性率。ROC曲线下的面积(Area Under Curve,AUC)也是评估分类模型性能的重要指标。AUC的取值范围在0.5到1之间,越接近1表示模型性能越好。

 一、数据处理

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression#逻辑线性回归,结果是二分类
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrixdata=pd.read_csv("diabetes.csv")X=data.iloc[:,:-1]
y=data.iloc[:,-1]

data:

plt.rcParams['font.sans-serif']=['SimHei']#用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False#用来正常显示负号plt.plot(X,y,'o')
plt.title('logistic regression 二分类 Binary classification')

二、建模

X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=0)#测试集占百分之三十,random_state=0随机抽取数据集里的成为测试集是一样的X_train.shape
#结果:(537, 8)X_test.shape
#结果:(231, 8)logregression = LogisticRegression()
logregression.fit(X_train,y_train)#训练集赋给模型y_predict=logregression.predict(X_test)#预测值
'''结果:
array([1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0,0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1,1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1,1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1,0, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,1, 0, 1, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0], dtype=int64)
'''logregression.score(X_test,y_test)#模型的精确率
#结果:0.7792207792207793

三、 confusion_matrix

confusion_matrix(y_test,y_predict)
#结果:array([[141,  16],
#             [ 35,  39]], dtype=int64)from sklearn.metrics import classification_report
print(classification_report(y_test,y_predict))
#support的0=141+16,support的1=上面35+39
#presion的0 表示预测0的准确率, pression的1 表示预测1的准确率
#recall召回率 reacall的1=141/(141+35) recall的0=39/(39+35)
'''结果:precision    recall  f1-score   support0       0.80      0.90      0.85       1571       0.71      0.53      0.60        74accuracy                           0.78       231macro avg       0.76      0.71      0.73       231
weighted avg       0.77      0.78      0.77       231
'''print(logregression.coef_)#八项参数
'''结果:
[[ 0.0852812   0.03447238 -0.01082113  0.00636549 -0.0013322   0.088529810.73271467  0.02415028]]
'''print(logregression.intercept_)#y轴切入
#结果:[-8.60539142]

四、 ROC(Receiver Operating Characteristic)

from sklearn.metrics import roc_auc_score
from sklearn.metrics import roc_curve
logrocauc=roc_auc_score(y_test,logregression.predict(X_test))
fpr,tpr,thresholds=roc_curve(y_test,logregression.predict_proba(X_test)[:,1])
plt.figure()
plt.plot(fpr,tpr,label='Logistic Regression (area=%0.3f)'%logrocauc)
plt.plot([0,1],[0,1],'r--')
plt.xlim([0.0,1.05])
plt.ylim([0.0,1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver operating characteristic')
plt.legend(loc='lower right')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/234437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

class085 数位dp-下【算法】

class085 数位dp-下【算法】 code1 P2657 [SCOI2009] windy 数 // windy数 // 不含前导零且相邻两个数字之差至少为2的正整数被称为windy数 // windy想知道[a,b]范围上总共有多少个windy数 // 测试链接 : https://www.luogu.com.cn/problem/P2657 // 请同学们务必参考如下代码…

7款创意性前端源码特效资源分享(附在线预览效果)

分享7款非常不错炫酷的前端特效源码 其中包含css动画特效、js原生特效、svg特效等 下面我会给出特效样式图或演示效果图 但你也可以点击在线预览查看源码的最终展示效果及下载源码资源 CSS绘制iPhone 14带动态岛 纯CSS绘制iPhone 14带动态岛模型 运行初始化时还附带出场动画 …

微信小程序动态导航栏(uniapp + vant)

本文使用到vant的van-tabbar组件来实现 一、uniapp整合vant ui vant小程序版本:https://vant-contrib.gitee.io/vant-weapp/#/home 注:vant并没有uniapp的版本,所以此处是引入小程序版本的ui 1. 下载vant编译后代码 https://github.com/youzan/vant-weapp/tree/dev/dist 2…

CentOs7.x安装部署SeaTunnelWeb遇到的坑

CentOs7.x安装部署SeaTunnelWeb遇到的坑 文章目录 1. 环境2. SeaTunnel安装部署2.1下载安装包2.2 设置环境变量2.3 安装连接器插件2.4 拷贝jar包到lib下2.5 启动命令2.6 执行官方client提交任务demo 3. SeaTunnel-Web安装部署3.1 下载安装包3.2 初始化数据库脚本或修改配置appl…

element plus 表格el-table行多选单选

1 行多选-点击checkbox 添加一个 el-table-column&#xff0c;设 type 属性为 selection 即可 <template><div class"box"><el-table :data"tableData" selection-change"handleSelectionChange"><el-table-column type&…

【单调栈】LeetCode:1944队列中可以看到的人数

作者推荐 【贪心算法】【中位贪心】.执行操作使频率分数最大 题目 有 n 个人排成一个队列&#xff0c;从左到右 编号为 0 到 n - 1 。给你以一个整数数组 heights &#xff0c;每个整数 互不相同&#xff0c;heights[i] 表示第 i 个人的高度。 一个人能 看到 他右边另一个人…

计算机网络 运输层下 | TCP概述 可靠传输 流量控制 拥塞控制 连接管理

文章目录 3 运输层主要协议 TCP 概述3.1 TCP概述 特点3.2 TCP连接RSVP资源预留协议 4 TCP可靠传输4.1 可靠传输工作原理4.1.1 停止等待协议4.1.2 连续ARQ协议 4.2 TCP可靠通信的具体实现4.2.1 以字节为单位的滑动窗口4.2.2 超时重传时间的选择4.2.3 选择确认SACK 5 TCP的流量控…

边缘计算有哪些常用场景?TSINGSEE边缘AI视频分析技术行业解决方案

随着ChatGPT生成式人工智能的爆发&#xff0c;AI技术在业界又掀起一波新浪潮。值得关注的是&#xff0c;边缘AI智能也在AI人工智能技术进步的基础上得到了快速发展。IDC跟踪报告数据显示&#xff0c;2021年我国的边缘计算服务器整体市场规模达到33.1亿美元&#xff0c;预计2020…

2023年中国法拍房用户画像和数据分析

法拍房主要平台 法拍房主要平台有3家&#xff0c;分别是阿里、京东和北交互联平台。目前官方认定纳入网络司法拍卖的平台共有7家&#xff0c;其中阿里资产司法拍卖平台的挂拍量最大。 阿里法拍房 阿里法拍房数据显示2017年&#xff0c;全国法拍房9000套&#xff1b;2018年&a…

HuatuoGPT模型介绍

文章目录 HuatuoGPT 模型介绍LLM4Med&#xff08;医疗大模型&#xff09;的作用ChatGPT 存在的问题HuatuoGPT的特点ChatGPT 与真实医生的区别解决方案用于SFT阶段的混合数据基于AI反馈的RL 评估单轮问答多轮问答人工评估 HuatuoGPT 模型介绍 HuatuoGPT&#xff08;华佗GPT&…

Web请求与响应

目录 Postman Postman简介 Postman的使用 请求 简单参数 实体参数 数组参数 集合参数 日期参数 Json参数 路径参数 响应 ResponseBody 统一响应结果 Postman Postman简介 postman是一款功能强大的网页调试与发送网页http请求的Chrome插件&#xff0c;常用于进行…

故障排查:shell脚本输出乱码

博客主页&#xff1a;https://tomcat.blog.csdn.net 博主昵称&#xff1a;农民工老王 主要领域&#xff1a;Java、Linux、K8S 期待大家的关注&#x1f496;点赞&#x1f44d;收藏⭐留言&#x1f4ac; 目录 故障详情故障原因解决方法iconv命令介绍 故障详情 最近的工作中遇到一…

C语言:指向数组的指针和指向数组元素的指针

相关阅读 C语言https://blog.csdn.net/weixin_45791458/category_12423166.html?spm1001.2014.3001.5482 指向数组的指针和指向数组元素的指针常常被混淆&#xff0c;或者笼统地被称为数组指针&#xff0c;但它们之间是有差别的&#xff0c;本文就将对此进行讨论。 下面的代码…

Java设计模式:工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

第五讲观测值中与卫星、接收机有关的误差 第六讲观测值中与信号传播路径有关的误差以及电离层、对流层相关模型 | GNSS(RTK)课程学习笔记day3

说明&#xff1a;以下笔记来自计算机视觉life吴桐老师课程&#xff1a;从零掌握GNSS、RTK定位[链接]&#xff0c;从零掌握RTKLIB[链接]。非原创&#xff01;且笔记仅供自身与大家学习使用&#xff0c;无利益目的。 第五讲 观测值中与卫星、接收机有关的误差 卫星轨道误差 由卫…

Kafka-Kafka核心参数详解

Kafka的HighLevel API使用是非常简单的&#xff0c;所以梳理模型时也要尽量简单化&#xff0c;主线清晰&#xff0c;细节慢慢扩展。 Kafka提供了两套客户端API&#xff0c;HighLevel API和LowLevel API。 HighLevel API封装了kafka的运行细节&#xff0c;使用起来比较简单&…

jQuery实现轮播图代码

简述 一个简单的jQuery轮播图代码,首先,定义了一个slideshow-container的div容器,其中包含了所有轮播图幻灯片。每个幻灯片都包含一个mySlides的类名,并且使用CSS将其隐藏。然后,使用JavaScript代码来控制幻灯片的显示和隐藏。在showSlides()函数中,遍历所有幻灯片并将它…

【项目管理】redmine

Redmine是用Ruby开发的基于web的项目管理软件&#xff0c;是用ROR框架开发的一套跨平台项目管理系统&#xff0c;据说是源于Basecamp的ror版而来&#xff0c;支持多种数据库&#xff0c;有不少自己独特的功能&#xff0c;例如提供wiki、新闻台等&#xff0c;还可以集成其他版本…

Flutter实现丝滑的滑动删除、移动排序等-Dismissible控件详解

文章目录 Dismissible 简介使用场景常用属性基本用法举例注意事项 Dismissible 简介 Dismissible 是 Flutter 中用于实现可滑动删除或拖拽操作的一个有用的小部件。主要用于在用户对列表项或任何其他可滑动的元素执行删除或拖动操作时&#xff0c;提供一种简便的实现方式。 使…

大数据处理与分析-Spark

导论 (基于Hadoop的MapReduce的优缺点&#xff09; MapReduce是一个分布式运算程序的编程框架&#xff0c;是用户开发“基于Hadoop的数据分析应用”的核心框架 MapReduce是一种用于处理大规模数据集的编程模型和计算框架。它将数据处理过程分为两个主要阶段&#xff1a;Map阶…