机器学习:基于Sklearn框架,使用逻辑回归对由心脏病引发的死亡进行预测分析

前言

系列专栏:机器学习:高级应用与实践【项目实战100+】【2024】✨︎
在本专栏中不仅包含一些适合初学者的最新机器学习项目,每个项目都处理一组不同的问题,包括监督和无监督学习、分类、回归和聚类,而且涉及创建深度学习模型、处理非结构化数据以及指导复杂的模型,如卷积神经网络、门控递归单元、大型语言模型和强化学习模型

世界卫生组织估计,五分之四的心血管疾病(CVD)死亡是由心脏病发作引起的。整个研究旨在确定很有可能受到 CVD 影响的患者比例,并使用 Logistic Regression 预测总体风险。

目录

  • 1. 数据准备
    • 1.1 加载数据集
    • 1.2 处理缺失值
    • 1.3 将数据集拆分为测试集和训练集
  • 2. 心脏病数据集的探索性数据分析
    • 2.1 数据集中所有可用患者的十年冠心病记录:
    • 2.2 计算受冠心病影响的患者人数,其中(0 = 未受影响;1 = 受影响)
  • 3. 用于心脏病预测的拟合逻辑回归模型
    • 3.1 训练模型
    • 3.2 评估逻辑回归模型
    • 3.3 混淆矩阵

逻辑回归: 尽管被称为回归,但实际上是一种广泛使用的监督分类技术。逻辑回归及其扩展,如多项式逻辑回归,允许我们使用一种简单易懂的方法预测观测值属于某一类的概率。

import pandas as pd
import pylab as pl
import numpy as np
import scipy.optimize as opt
import statsmodels.api as sm
from sklearn import preprocessing
'exec(% matplotlib inline)'
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import seaborn as sns

1. 数据准备

该数据集来自一项正在进行的对马萨诸塞州弗雷明汉镇居民的心血管研究。分类目标是预测患者未来10年是否有冠心病(CHD)的风险。数据集提供患者的信息。它包括4000多条记录和15个属性。

1.1 加载数据集

# dataset
disease_df = pd.read_csv("framingham.csv")
disease_df.drop(['education'], inplace = True, axis = 1)
disease_df.rename(columns ={'male':'Sex_male'}, inplace = True)

1.2 处理缺失值

# removing NaN / NULL values
disease_df.dropna(axis = 0, inplace = True)
print(disease_df.head(), disease_df.shape)
print(disease_df.TenYearCHD.value_counts())

输出

   Sex_male  age  currentSmoker  cigsPerDay  BPMeds  prevalentStroke  \
0         1   39              0         0.0     0.0                0   
1         0   46              0         0.0     0.0                0   
2         1   48              1        20.0     0.0                0   
3         0   61              1        30.0     0.0                0   
4         0   46              1        23.0     0.0                0   prevalentHyp  diabetes  totChol  sysBP  diaBP    BMI  heartRate  glucose  \
0             0         0    195.0  106.0   70.0  26.97       80.0     77.0   
1             0         0    250.0  121.0   81.0  28.73       95.0     76.0   
2             0         0    245.0  127.5   80.0  25.34       75.0     70.0   
3             1         0    225.0  150.0   95.0  28.58       65.0    103.0   
4             0         0    285.0  130.0   84.0  23.10       85.0     85.0   TenYearCHD  
0           0  
1           0  
2           0  
3           1  
4           0   (3751, 15)
TenYearCHD
0    3179
1     572
Name: count, dtype: int64

1.3 将数据集拆分为测试集和训练集

X = np.asarray(disease_df[['age', 'Sex_male', 'cigsPerDay', 'totChol', 'sysBP', 'glucose']])
y = np.asarray(disease_df['TenYearCHD'])# normalization of the dataset
X = preprocessing.StandardScaler().fit(X).transform(X)# Train-and-Test -Split
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size = 0.3, random_state = 4)print ('Train set:', X_train.shape,  y_train.shape)
print ('Test set:', X_test.shape,  y_test.shape)

输出

Train set: (2625, 6) (2625,)
Test set: (1126, 6) (1126,)

2. 心脏病数据集的探索性数据分析

2.1 数据集中所有可用患者的十年冠心病记录:

# counting no. of patients affected with CHD
plt.figure(figsize=(7, 5))
sns.countplot(x='TenYearCHD', hue="TenYearCHD", data=disease_df, legend=False,palette="BuGn_r")
plt.show()

输出
在这里插入图片描述

2.2 计算受冠心病影响的患者人数,其中(0 = 未受影响;1 = 受影响)

laste = disease_df['TenYearCHD'].plot()
plt.show(laste)

输出
在这里插入图片描述

3. 用于心脏病预测的拟合逻辑回归模型

3.1 训练模型

from sklearn.linear_model import LogisticRegression
logreg = LogisticRegression()
logreg.fit(X_train, y_train)
y_pred = logreg.predict(X_test)

3.2 评估逻辑回归模型

# Evaluation and accuracy
from sklearn.metrics import accuracy_score
print('Accuracy of the model is =', accuracy_score(y_test, y_pred))

输出

Accuracy of the model is = 0.8490230905861457

3.3 混淆矩阵

# Confusion matrix 
from sklearn.metrics import confusion_matrix, classification_reportcm = confusion_matrix(y_test, y_pred)
conf_matrix = pd.DataFrame(data = cm, columns = ['Predicted:0', 'Predicted:1'], index =['Actual:0', 'Actual:1'])plt.figure(figsize = (8, 5))
sn.heatmap(conf_matrix, annot = True, fmt = 'd', cmap = "Greens")plt.show()
print('The details for confusion matrix is =')
print (classification_report(y_test, y_pred))

输出
在这里插入图片描述

The details for confusion matrix is =precision    recall  f1-score   support0       0.85      0.99      0.92       9511       0.61      0.08      0.14       175accuracy                           0.85      1126macro avg       0.73      0.54      0.53      1126
weighted avg       0.82      0.85      0.80      1126

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

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

相关文章

(八)Servlet教程——创建Web项目以及Servlet的实现

1. 打开Idea编辑器 2. 点击界面上的“新建项目”按钮 3. 设置好项目名称和位置 应用服务器选择之前设置好的Tomcat服务器 构建系统默认选择Maven 4. 点击“下一步”按钮 5. 点击“完成”按钮,Idea就创建好了项目,创建完成后的目录结构如下图所示 6. 此…

共享单车(二):项目日志

stdin, stdout, stderr Linux系统下,当一个用户进程被创建时,与之对应的三个数据流(stdin,stdout和stderr,即三个文件)也会被创建。 stdin,标准输入文件,通常对应着终端的键盘。 s…

将针孔模型相机 应用到3DGS

Motivation 3DGS 的 投影采用的是 CG系的投影矩阵 P P P, 默认相机的 principal point (相机光心) 位于图像的中点处。但是 实际应用的 绝大多数的 相机 并不满足这样一个设定, 因此我们 需要根据 f , c x , c y {f,c_x, c_y} f,cx​,cy​ 这几个参数重新构建3D …

docker安装【zookeeper】【kafka】【provectuslabs/kafka-ui】记录

目录 1.安装zookeeper:3.9.2-jre-172.安装kafka:3.7.03.安装provectuslabs/kafka-ui (选做)新环境没有jdk,安装jdk-17.0.10备用 mkdir -p /export/{data,apps,logs,conf,downloads}cd /export/downloadscurl -OLk https://download.oracle.…

Docker搭建Maven仓库Nexus

文章目录 一、简介二、Docker部署三、仓库配置四、用户使用Maven五、管理Docker镜像 一、简介 Nexus Repository Manager(简称Nexus)是一个强大的仓库管理器。 Nexus3支持maven、docker、npm、yum、apt等多种仓库的管理。 建立了 Maven 私服后&#xf…

中国发布首个汽车大模型标准

🦉 AI新闻 🚀 中国发布首个汽车大模型标准 摘要:中国信息通信研究院于4月28日发布了国内首个汽车大模型标准,标志着汽车行业正式迈向“人工智能+”时代。该标准包含三个核心能力域:场景丰富度、能力支持度…

Unity 异常 bug

OverlapBoxNonAlloc 使用bug 环境: Unity2021.3.15 在测试场景中使用 OverlapBoxNonAlloc 测试检测没有问题 但是到了真实应用场景,使用 OverlapBoxNonAlloc 检测移动中的小怪 小怪碰撞体为:带有 Rigidbody 的Circle Collider 2D 就会出现异…

了解JRE扩展

一、Java 运行环境的扩展 Java 运行环境提供的类库只是核心类,不可能满足用户的全部需求 将类打包为 jar 包,放入扩展 \jre\lib\ext 中,程序就可以使用 import 语句使用扩展中的类 二、字节码文件压缩成 jar 文件 编译源文件 --> 编写…

船用组装式中央空调案例

船用组装式空调的整体介绍 1.1 装置的主要技术数据及配套设备规格 该轮采用的是船用组装式空调装置。 1.1.1 空调装置 1)型号:CJKR-116船用组装式空调装置;2)制冷型式:直接蒸发式;3)制冷量&…

区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测(Matlab)

区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测(Matlab) 目录 区间预测 | PSO-RF-KDE的粒子群优化随机森林结合核密度估计多变量回归区间预测(Matlab)效果一览基本介绍程序设计参考资料 效果一览 基…

MemFire案例-政务应急物联网实时监测预警项目

客户背景 党的十八大以来,中央多次就应急管理工作做出重要指示:要求坚持以防为主、防抗救相结合,全面提升综合防灾能力;坚持生命至上、安全第一,完善安全生产责任制,坚决遏制重特大安全事故。 面对新形势…

【1429】招生管理管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 招生管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&…

#8松桑前端后花园周刊-谷歌推迟cookie弃用、JS Naked Day、Node22、pnpm9.0、Hexo、JSR、html-to-image

⚡️行业动态 谷歌再次推迟了 Chrome 中第三方 cookie 弃用计划 在 Chrome 上逐步淘汰第三方 cookie 计划的最新进展:延迟到2025年年初开始进行第三方 cookie 弃用。 JS Naked Day 4月24号被社区开发者定为 JS Naked Day,完全没有 JavaScript 的一天&…

在VSCode中调试其他软件执行的python文件

在VSCode中调试其他软件执行的python文件 0. 实际场景 我有一段python代码想在Metashape中运行,但是又想在中间某一步停下来查看变量值。由于Metashape的python环境不容易在vscode中配置,所以直接用vscode调试单个文件的方式无法实现这个想法。还好&am…

[NeurIPS-23] GOHA: Generalizable One-shot 3D Neural Head Avatar

[pdf | proj | code] 本文提出一种基于单图的可驱动虚拟人像重建框架。基于3DMM给粗重建、驱动结果,基于神经辐射场给细粒度平滑结果。 方法 给定源图片I_s和目标图片I_t,希望生成图片I_o具有源图片ID和目标图片表情位姿。本文提出三个分支:…

如何让用户听话?

​福格教授(斯坦福大学行为设计实验室创始人)通过深入研究人类行为20年,2007年用自己的名子命名,提出了一个行为模型:福格行为模型。 模型表明:人的行为发生,要有做出行为的动机和完成行为的能…

第七天 dfs剪枝优化

第七天 dfs剪枝&优化 1可行性剪枝 2最优性剪枝 3重复性剪枝 题 1 输入 5 5 6 …S. XX.X. …X… …D.X …X… 输出 YES —————————————— 题解 #include<iostream> #include<cstdio> using namespace std; const int N 10; int n,m,T; char …

GDPU 算法分析与设计 天码行空5

一、【实验目的】 &#xff08;1&#xff09;熟悉动态规划算法的基本思想. &#xff08;2&#xff09;理解动态规划算法中子问题的划分和递推方程设计的基本方法. &#xff08;3&#xff09;熟悉矩阵链乘法的基本思想并编程实现。 二、【实验内容】 输入:矩阵链Ai…j的输入为…

HCIP-Datacom-ARST必选题库_网络协议【道题】

一、单选 1.能够生成组播分发树的组播协议是: OSPF PIMv2 BGP IGMPv2 二、多选 1.以以下哪些属于多通道协议? Te1net P FTP H.323 SMTP LE 2.以下哪些协议属于多通道协议? SMTP Telnet H.323 FTP 三、简答 1.请将以下组网可靠性的备份技术与其相应特性进…

计算机系列之进程调度、死锁、存储管理、设备管理、文件管理

11、进程调度-死锁-存储管理-固定分页分段 1、进程调度 进程调度方式是指当有更高优先级的进程到来时如何分配CPU。分为可剥夺和不可剥夺两种&#xff0c;可剥夺指当有更高优先级进程到来时&#xff0c;强行将正在运行进程的CPU分配给高优先级进程&#xff1b;不可剥夺是指高…