【Python机器学习系列】建立多层感知机模型预测心脏疾病(完整实现过程)

news2024/9/28 13:18:57

一、引言

前文回顾:

【Python机器学习系列】建立决策树模型预测心脏疾病(完整实现过程)

【Python机器学习系列】建立支持向量机模型预测心脏疾病(完整实现过程)

【Python机器学习系列】建立逻辑回归模型预测心脏疾病(完整实现过程)

【Python机器学习系列】建立KNN模型预测心脏疾病(完整实现过程)

【Python机器学习系列】建立随机森林模型预测心脏疾病(完整实现过程)

【Python机器学习系列】建立梯度提升模型预测心脏疾病(完整实现过程)

【Python机器学习系列】建立XGBoost模型预测心脏疾病(完整实现过程)

【Python机器学习系列】建立LightGBM模型预测心脏疾病(完整实现过程)

【Python机器学习系列】建立AdaBoost模型预测心脏疾病(完整实现过程)

【Python机器学习系列】建立朴素贝叶斯模型预测心脏疾病(完整实现过程)

对于表格数据,一套完整的机器学习建模流程如下:

图片

        针对不同的数据集,有些步骤不适用即不需要做,其中橘红色框为必要步骤,由于数据质量较高,本文有些步骤跳过了,跳过的步骤将单独出文章总结!同时欢迎大家关注翻看我之前的一些相关文章。

多层感知机(Multilayer Perceptron,简称 MLP)是一种基于人工神经网络的分类和回归模型。它由多个神经网络层组成,包括输入层、隐藏层和输出层。每个层都由多个神经元(也称为节点)组成,神经元之间通过连接权重进行信息传递。

MLP 的基本结构是一个前馈神经网络,每个神经元接收来自上一层神经元的输入,并将其加权求和,然后通过激活函数进行非线性变换,最终输出到下一层的神经元。训练过程通常使用反向传播算法(Backpropagation)来更新连接权重,以最小化预测输出与实际输出之间的误差。反向传播通过计算误差梯度并将其向后传递,逐层调整连接权重。

MLP 在机器学习领域广泛应用于分类和回归任务。它可以处理非线性关系,并且具有一定的拟合能力。然而,MLP 模型的性能和泛化能力高度依赖于网络结构的设计、激活函数的选择、正则化方法的使用以及训练数据的质量等因素。

        本文利用scikit-learn(一个常用的机器学习库)实现了基于心脏疾病数据集建立多层感知机模型对心脏疾病患者进行分类预测的完整过程。

二、实现过程

1、准备数据

data = pd.read_csv(r'Dataset.csv')
df = pd.DataFrame(data)

df:

图片

数据基本信息:

print(df.head())
print(df.info())
print(df.shape)
print(df.columns)
print(df.dtypes)
cat_cols = [col for col in df.columns if df[col].dtype == "object"] # 类别型变量名
num_cols = [col for col in df.columns if df[col].dtype != "object"] # 数值型变量名

2、提取特征变量和目标变量

target = 'target'
features = df.columns.drop(target)
print(data["target"].value_counts()) # 顺便查看一下样本是否平衡

3、数据集划分

# df = shuffle(df)
X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=0)

4、归一化

# 归一化
mm1 = MinMaxScaler()   # 特征进行归一化
X_train_m = mm1.fit_transform(X_train)
mm2 = MinMaxScaler()     # 标签进行归一化
y_train_m = mm2.fit_transform(y_train)

5、模型的构建与训练

# 模型的构建与训练
model = MLPClassifier()
model.fit(X_train_m, y_train_m)

6、模型的推理与评价

# 模型推理与评价
# 对测试集特征进行相同规则mm1的归一化处理,然后输入到模型进行预测
X_test_m = mm1.transform(X_test) #注意fit_transform() 和 transform()的区别
y_pred_m = model.predict(X_test_m)
y_scores = model.predict_proba(X_test_m)
y_pred = mm2.inverse_transform(np.reshape(y_pred_m, (-1, 1)))

acc = accuracy_score(y_test, y_pred) # 准确率acc
cm = confusion_matrix(y_test, y_pred) # 混淆矩阵
cr = classification_report(y_test, y_pred) # 分类报告
fpr, tpr, thresholds = roc_curve(y_test, y_scores[:, 1], pos_label=1) # 计算ROC曲线和AUC值,绘制ROC曲线
roc_auc = auc(fpr, tpr)
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
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")
plt.show()

cm:

图片

cr:

图片

ROC:

图片

作者简介:

读研期间发表6篇SCI数据挖掘相关论文,现在某研究院从事数据算法相关科研工作,结合自身科研实践经历不定期分享关于Python、机器学习、深度学习、人工智能系列基础知识与应用案例。致力于只做原创,以最简单的方式理解和学习,关注我一起交流成长。需要数据集和源码的小伙伴可以关注底部公众号添加作者微信。

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

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

相关文章

Java 基于 SpringBoot+Vue 的考研论坛管理系统

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

Transformer实战-系列教程2:Transformer算法解读2

🚩🚩🚩Transformer实战-系列教程总目录 有任何问题欢迎在下面留言 Transformer实战-系列教程1:Transformer算法解读1 Transformer实战-系列教程2:Transformer算法解读2 5、Multi-head机制 在4中我们的输入是X&#x…

【内置对象·js】

数学对象 document.write("圆周率为 " Math.PI "<br>");日期对象 var date new Date(); // 实例化 Date 对象var month date.getMonth() 1; // 获取月份&#xff0c;取值为 0&#xff08;一月&#xff09;到 11&#xff08;十二月&#xff09;之…

蓝桥杯第九届省赛题-----彩灯控制系统笔记

题目要求&#xff1a; 一、 基本要求 1.1 使用 CT107D 单片机竞赛板&#xff0c;完成“彩灯控制器”功能的程序设计与调 试&#xff1b; 1.2 设计与调试过程中&#xff0c;可参考组委会提供的“资源数据包”&#xff1b; 1.3 Keil 工程文件以准考证号命名&#xff0c…

百无聊赖之JavaEE从入门到放弃(十八)其他常用类

目录 一.Math 类 二.Random 类 三.File类 四.枚举 一.Math 类 java.lang.Math 提供了一系列静态方法用于科学计算&#xff1b;常用方法如下&#xff1a; abs 绝对值 acos,asin,atan,cos,sin,tan 三角函数 sqrt 平方根 pow(double a, double b) a 的 b 次幂 max(double a,…

24年2月深度学习

参考&#xff1a; RAPTOR: RECURSIVE ABSTRACTIVE PROCESSING FOR TREE-ORGANIZED RETRIEVAL 树结构检索方案。

Linux文件系统和磁盘的 I/O 常用性能工具指标详解

I/O 栈的全景图&#xff1a; 把 Linux 存储系统的 I/O 栈&#xff0c;由上到下分为三个层次&#xff0c;分别是文件系统层、通用块层和设备层。 文件系统层&#xff0c;包括虚拟文件系统和其他各种文件系统的具体实现。它为上层的应用程序&#xff0c;提供标准的文件访问接口&…

Redis(十一)单线程VS多线程

文章目录 概述为何选择单线程主要性能瓶颈多线程特性和IO多路复用概述Unix网络编程中的五种IO模型Blocking IO-阻塞IONoneBlocking IO-非阻塞IOIO multiplexing-IO多路复用signal driven IO-信号驱动IOasynchronous IO-异步IO 场景&#xff1a;引出epoll总结 开启Redis多线程其…

远EC600E-CN LTE Standard模块硬件设计手册

EC600E-CN是一款LTE-FDD、LTE-TDD无线通信模块&#xff0c;支持LTE-FDD和LTE-TDD数据连接&#xff0c;可为客户在特定场景应用中提供语音功能。 模块封装紧凑&#xff0c;仅为22.9mm21.9mm2.4mm&#xff0c;能满足大部分M2M应用需求&#xff0c;例如自动化领域、智能计量、跟踪…

ClickHouse为什么这么快(一)减少数据扫描范围

相信看过ClickHouse性能测试报告的同学都很震惊于他超高的OLAP查询性能。于是下一步开始搜索“ClickHouse性能为什么高”看到了例如&#xff1a;列存储、数据压缩、并行处理、向量化引擎 等等一些关键词&#xff0c;对于我们一般人来说&#xff0c;并没有解答心中的疑惑&#x…

【开源】JAVA+Vue+SpringBoot实现就医保险管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 科室档案模块2.2 医生档案模块2.3 预约挂号模块2.4 我的挂号模块 三、系统展示四、核心代码4.1 用户查询全部医生4.2 新增医生4.3 查询科室4.4 新增号源4.5 预约号源 五、免责说明 一、摘要 1.1 项目介绍 基于JAVAVue…

关于java的异常处理

关于java的异常处理 我们在上一篇文章中&#xff0c;对java中的异常有了一个初步的了解&#xff0c;本篇文章我们来了解一下异常的处理机制&#xff0c;如何抛出异常&#xff0c;如何捕捉异常&#x1f600; 关于java的异常 一、异常类型等级 二、关键字 trycatchfinallythr…

GmSSL - GmSSL的编译、安装和命令行基本指令

文章目录 Pre下载源代码(zip)编译与安装SM4加密解密SM3摘要SM2签名及验签SM2加密及解密生成SM2根证书rootcakey.pem及CA证书cakey.pem使用CA证书签发签名证书和加密证书将签名证书和ca证书合并为服务端证书certs.pem&#xff0c;并验证查看证书内容&#xff1a; Pre Java - 一…

【Uni-App】运行微信小程序时报错routeDone with a webviewId 2 that is not the current page

使用HBuilderX开发微信小程序&#xff0c;运行项目的时有可能会出现routeDone with a webviewId 1 that is not the current page的报错&#xff0c;但不影响运行。如果强迫症介意的话&#xff0c;可以考下面的方法进行修复。 产生原因 由于微信开发者工具的调试基础库处于灰度…

改进的 K-Means 聚类方法介绍

引言 数据科学的一个中心假设是&#xff0c;紧密度表明相关性。彼此“接近”的数据点是相似的。如果将年龄、头发数量和体重绘制在空间中&#xff0c;很可能许多人会聚集在一起。这就是 k 均值聚类背后的直觉。 我们随机生成 K 个质心&#xff0c;每个簇一个&#xff0c;并将…

阿里云搭建幻兽帕鲁游戏服务器

大家好&#xff0c;这里是七七&#xff0c;最近幻兽帕鲁很火&#xff0c;身边有很多人都在玩。有朋友想要自己搭建一个服务器&#xff0c;我就来帮帮他吧。 我参考了阿里云的搭建方式&#xff1a;1分钟畅玩&#xff01;一键部署幻兽帕鲁联机服务器 用他们提供的方案&#xff0…

20240202在Ubuntu20.04.6下使用whisper.cpp的CPU模式

20240202在Ubuntu20.04.6下使用whisper.cpp的CPU模式 2024/2/2 14:15 rootrootrootroot-X99-Turbo:~/whisper.cpp$ ./main -l zh -osrt -m models/ggml-medium.bin chs.wav 在纯CPU模式下&#xff0c;使用medium中等模型&#xff0c;7分钟的中文视频需要851829.69 ms&#xf…

Arduino控制器使用Udp网络对8路IO输出控制

一、实现功能 1、创建串口连接&#xff0c;将接收的Udp数据通过串口发送出去。 2、创建Udp连接&#xff0c;用以接收Udp数据和对发送数据的Udp机器反馈Udp数据 3、对接收到的Udp数据进行解析&#xff0c;然后对8路IO进行输出控制。 4、1对应IO输出低电平&#xff0c;‘0’对…

HiveSQL题——聚合函数(sum/count/max/min/avg)

目录 一、窗口函数的知识点 1.1 窗户函数的定义 1.2 窗户函数的语法 1.3 窗口函数分类 聚合函数 排序函数 前后函数 头尾函数 1.4 聚合函数 二、实际案例 2.1 每个用户累积访问次数 0 问题描述 1 数据准备 2 数据分析 3 小结 2.2 各直播间最大的同时在线人数 …

什么是ACL?

知识改变命运&#xff0c;技术就是要分享&#xff0c;有问题随时联系&#xff0c;免费答疑&#xff0c;欢迎联系&#xff01; 厦门微思网络​​​​​​https://www.xmws.cn 华为认证\华为HCIA-Datacom\华为HCIP-Datacom\华为HCIE-Datacom Linux\RHCE\RHCE 9.0\RHCA\ Oracle OC…