利用逻辑回归判断病人肺部是否发生病变

      大家好,我是带我去滑雪!

      判断肺部是否发生病变可以及早发现疾病、指导治疗和监测疾病进展,以及预防和促进肺部健康,定期进行肺部评估和检查对于保护肺健康、预防疾病和提高生活质量至关重要。本期将利用相关医学临床数据结合逻辑回归判断病人肺部是否发生病变,其中响应变量为group(1表示肺部发生病变,0表示正常),特征变量为ESR(表示红细胞沉降率)、CRP(表示C-反应蛋白)、ALB(表示白蛋白)、Anti-SSA(表示抗SSA抗体)、Glandular involvement(表示腺体受累)、gender(表示性别)、c-PSA(cancer-specific prostate-specific antigen)、CA 15-3(Cancer Antigen 15-3)、TH17(Th17细胞)、ANA(代表抗核抗体)、CA125(Cancer Antigen 125)、LDH(代表乳酸脱氢酶)。下面开始使用逻辑回归进行肺部病变判断。

(1)导入相关模块与数据

import pandas as pd

import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix
from sklearn.metrics import classification_report
from sklearn.metrics import cohen_kappa_score#导入包
import numpy as np
from scipy.stats import logistic
import matplotlib.pyplot as plt
titanic = pd.read_csv('filename1.csv')
titanic#导入数据

输出结果:

data.Ageimpute.data.ESR..mean.impute.data.CRP..mean.impute.data.ALB..mean.impute.data.Anti.SSA..median.impute.data.Glandular.involvement..median.impute.data.Gender..median.impute.data.c.PSA..mean.impute.data.CA153..mean.impute.data.TH17..mean.impute.data.ANA..median.impute.data.CA125..mean.impute.data.LDH..mean.data.group
06721.0000004.81000038.6926610000.3000003.5000010.33000013.000000212.2104930
17833.00000012.08991641.1000000000.61093122.400007.465353117.500000485.0000000
26924.0000002.25000042.7000000000.3000005.400008.02000004.360000236.0000000
37143.00000021.80000039.2000000000.30000011.110005.50000016.700000166.0000000
46920.0000002.43000047.6000003000.3000006.930004.31000003.520000223.0000000
.............................................
9546340.2749142.37000040.3000002000.4300006.100006.56000007.720000234.0000000
9556827.0000003.52000041.0000003000.3200007.520004.78000017.150000254.0000000
9566140.27491412.08991640.7000000000.61093112.463031.79000019.392344161.0000000
9576027.00000035.40000038.3000000000.2000007.680005.70000009.290000256.0000000
9586830.0000002.28000044.4000000000.2000005.320004.43000004.710000172.0000000

959 rows × 14 columns

(2)数据处理

X = titanic.iloc[:,:-1]
y = titanic.iloc[:,-1]
X=pd.get_dummies(X,drop_first = True)
X

(3)划分训练集与测试集

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
X_train, X_test, y_train, y_test =  train_test_split(X,y,test_size=0.2,stratify=None, random_state=0)#划分训练集和测试集

(4)拟合逻辑回归

model =  LogisticRegression(C=1e10)
model.fit(X_train, y_train)

model.intercept_    #模型截距
model.coef_       #模型回归系数

输出结果:

array([[ 0.03899236,  0.00458312,  0.000863  , -0.10140358, -0.09681747,
         0.74167081,  0.56011254,  0.24636358,  0.0226635 , -0.02681392,
         0.4987412 , -0.01932326,  0.00211805]])

(5)使用逻辑回归测试集进行评价分类准确率

model.score(X_test, y_test)

输出结果:

0.6822916666666666

(6)测试集预测所有种类的概率

prob = model.predict_proba(X_test)
prob[:5]

输出结果:

array([[0.71336774, 0.28663226],
       [0.34959506, 0.65040494],
       [0.91506198, 0.08493802],
       [0.24008149, 0.75991851],
       [0.55969043, 0.44030957]])

(7)模型预测

pred = model.predict(X_test)
pred[:5]#计算测试集的预测值,展示前五个值

输出结果:

array([0, 1, 0, 1, 0], dtype=int64)

(8)计算混淆矩阵

table = pd.crosstab(y_test, pred, rownames=['Actual'], colnames=['Predicted'])
table

输出结果:

Predicted01
Actual
09922
13932

(9)计算基于混淆矩阵诸多评价指标 

print(classification_report(y_test, pred, target_names=['yes', 'no']))

输出结果:

                precision    recall  f1-score   support

         yes       0.72      0.82      0.76       121
          no       0.59      0.45      0.51        71

    accuracy                           0.68       192
   macro avg       0.65      0.63      0.64       192
weighted avg       0.67      0.68      0.67       192

(10)绘制ROC曲线

from scikitplot.metrics import plot_roc
plot_roc(y_test, prob)
x = np.linspace(0, 1, 100)
plt.plot(x, x, 'k--', linewidth=1)
plt.title('ROC Curve (Test Set)')#画ROC曲线
plt.savefig("E:\工作\硕士\博客\squares1.png",
            bbox_inches ="tight",
            pad_inches = 1,
            transparent = True,
            facecolor ="w",
            edgecolor ='w',
            dpi=300,
            orientation ='landscape')

输出结果:

 

 需要数据集的家人们可以去百度网盘(永久有效)获取:

链接:https://pan.baidu.com/s/1E59qYZuGhwlrx6gn4JJZTg?pwd=2138
提取码:2138 


更多优质内容持续发布中,请移步主页查看。

   点赞+关注,下次不迷路!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DEAP库文档教程二-----创建类型

本节将展示如何通过creator创建类型以及如何使用toolbox进行初始化。 1、Fitness 已经提供的Fitness类是一个抽象类,它需要weight来使得它成为一个函数。一个最小化的适应度是通过负权重构建的,而一个最大化适应度则需要正权重。 creator.create(&quo…

算法通关村第10关【青铜】| 快速排序各种写法

思路: 指定一个数字,将数组比他小的放到左边,比他大的放到右边,实现归位 然后再指定一个数字递归,一直遍历完数组 最好的情况每次指定的都是中间位置的数字,划分完后两边长度相等,2T(n/2) O…

Ansible之playbooks剧本

文章目录 一.playbooks介绍1.playbooks简述2.playbooks剧本格式3.playbooks组成部分4.运行playbooks及检测文件配置 二.模块实战实例1.playbooks模块实战实例2.vars模块实战实例3.指定远程主机sudo切换用户4.when模块实战实例5.with_items迭代模块实战实例6.Templates 模块实战…

【BUG事务内消息发送】事务内消息发送,事务还未结束,消息发送已被消费,查无数据怎么解决?

问题描述 在一个事务内完成插入操作,通过MQ异步通知其他微服务进行事件处理。 由于是在事务内发送,其他服务消费消息,查询数据时还不存在如何解决呢? 解决方案 通过spring-tx包的TransactionSynchronizationManager事务管理器解…

OpenShift 4 - 用 Prometheus 和 Grafana 监视用户应用定制的观测指标(视频)

《OpenShift / RHEL / DevSecOps 汇总目录》 说明:本文已经在 OpenShift 4.13 的环境中验证 文章目录 OpenShift 的监控功能构成部署被监控应用用 OpenShift 内置功能监控应用用 Grafana 监控应用安装 Grafana 运行环境配置 Grafana 数据源定制监控 Dashboard 演示视…

LeetCode(力扣)669. 修剪二叉搜索树Python

LeetCode669. 修剪二叉搜索树 题目链接代码 题目链接 https://leetcode.cn/problems/trim-a-binary-search-tree/ 代码 递归 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # …

【MySQL】基础知识(二)

MySQL基础知识(二) 文章目录 MySQL基础知识(二)01 表操作1.1 创建表1.2 查看所有表1.3 查看指定表的结构1.4 删除表练习 02 CURD2.1 新增2.1.1 指定列插入2.1.2 datetime类型插入 2.2 查询2.2.1 全列查询2.2.2 指定列查询2.2.3 查询字段为表达式2.2.4 别名查询2.2.5 去重2.2.6 …

android frida 逆向 自吐加密算法

前言: ♛ frida hook android Android 逆向神器 前几天在学习 Android 逆向的时候发现了一个神器:通过 frida hook 我们可以 “劫持” 一些函数 为我们所用, 今天就和大家上手一个 加密函数的劫持 让打印出: 加密秘钥 …

Docker安装详细步骤

Docker安装详细步骤 1、安装环境准备 主机:192.168.40.5 zch01 设置主机名 # hostnamectl set-hostname zch01 && bash 配置hosts文件 [root ~]# vi /etc/hosts 添加如下内容: 192.168.40.5 zch01 关闭防火墙 [rootzch01 ~]# systemct…

分库分表篇-2.1 Mycat-配置文件篇

文章目录 前言一、Mycat server.xml作用:1.1 server.xml 作用:1.2 定义数据库逻辑模式: 二、Mycat schema.xml作用:2.1 schema 标签:2.1.1 schema 中table 标签: 2.2 dataNode 标签:2.3 dataHos…

dockerfile 例子(二)

Dockerfile由一行一行的命令语句组成,#开头的为注释行。Dockerfile文件内容分为四个部分:基础镜像信息、维护者信息、镜像操作指令以及容器启动执行指令。 接下来给大家列出Dockerfile中主要命令的说明。 FROM,指定所创建镜像的基础镜像。 …

安达发|APS软件排程规则及异常处理方案详解

随着科技的发展,工业生产逐渐向智能化、自动化方向发展。APS(高级计划与排程)软件作为一种集成了先进技术和理念的工业软件,可以帮助企业实现生产过程的优化和控制。其中,排程规则是APS软件的核心功能之一,它可以帮助企业合理安排…

跨境做独立站,如何低成本引流?

大家都知道,海外的消费习惯与国内不同,独立站一向是海外消费者的最喜欢的购物方式之一,这也吸引了许多跨境商家开设独立站。 独立站不同于其他的第三方平台,其他平台可以靠平台自身流量来获得转化,而独立站本身没有流…

USRP 简介,对于NI软件无线电你所需要了解的一切

什么是 USRP 通用软件无线电外设( USRP ) 是由 Ettus Research 及其母公司National Instruments设计和销售的一系列软件定义无线电。USRP 产品系列由Matt Ettus领导的团队开发,被研究实验室、大学和业余爱好者广泛使用。 大多数 USRP 通过以太网线连接到主机&…

docker 04.更加重要的命令

之前的都是基础命令, 前台交互进程和后台守护进程: 重新进入容器: docker中的导入导出: docker中的拷贝到:

用python画一个柱状图可能用到的代码【完整版】

画柱状图 导入包 import torch as t import numpy as np import pandas as pd import matplotlib.pyplot as plt import joblib import matplotlib as mpl设置默认字体格式为"Times New Roman" font_name Times New Roman mpl.rcParams[font.family] font_name通…

uni-app 分不清的全局变量this, uni, $u, vm, uni.$u, this.$u

项目引入了uview,并将uview所有模块指给uniapp全局变量uni uni.$u$u 在登录页面,或者APP.vue打印以下变量: this, uni, $u, vm, uni.$u, this.$u // this,$u,vm,uni, this.$u, uni.$u全局变量说明console.log(">>th…

简单数学题:找出最大的可达成数字

来看一道简单的数学题:力扣2769. 找出最大的可达成数字 题目描述的花里胡哨,天花乱坠,但这道题目非常简单。我们最多执行t次操作,只需每次操作都让x-1,让num1,执行t次操作后,x就变为xt&#xff…

【JavaEE】Spring事务-事务的基本介绍-事务的实现-@Transactional基本介绍和使用

【JavaEE】Spring 事务(1) 文章目录 【JavaEE】Spring 事务(1)1. 为什么要使用事务2. Spring中事务的实现2.1 事务针对哪些操作2.2 MySQL 事务使用2.3 Spring 编程式事务(手动挡)2.4 Spring 声明式事务&…

视频汇聚/视频云存储/视频监控管理平台EasyCVR接入海康SDK协议后无法播放该如何解决?

开源EasyDarwin视频监控/安防监控/视频汇聚EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流&#…
最新文章