基于神经网络的肾脏疾病预测模型

news2025/4/3 17:45:18

构建一个基于神经网络的肾脏疾病预测模型

1. 数据预处理

  • 加载数据:读取 kidney_disease.csv 文件,加载患者医疗数据。
  • 删除冗余特征:移除与预测目标无关的列(如 alsu 等),保留关键特征(如年龄、血压、血糖等)。
  • 处理缺失值:用 np.nan_to_num 将缺失值(NaN)替换为0,但此方法可能不适用于分类特征(例如“是否有糖尿病”列中0可能代表“否”)。

2. 特征工程

  • 标签定义:假设数据最后一列(第8列)是分类标签(如 classification),标记患者是否患病(二分类问题)。
  • 分类变量编码:对分类特征(如 dm(糖尿病)、cad(冠心病)、appet(食欲))进行独热编码(One-Hot Encoding),将其转换为数值形式供模型处理。

3. 数据标准化与分割

  • 标准化:使用 StandardScaler 对数值型特征进行标准化(均值0,方差1),消除量纲差异。
  • 数据分割:按8:2比例划分训练集和测试集,确保模型评估的客观性。

4. 神经网络建模

  • 模型结构
    • 输入层:11个输入节点(对应特征数量)。
    • 隐藏层:2层全连接层,每层6个神经元,激活函数为ReLU。
    • 输出层:1个神经元,激活函数为Sigmoid,输出患病概率(0~1)。
  • 训练配置
    • 损失函数:二元交叉熵(binary_crossentropy),适用于二分类问题。
    • 优化器:Adam,自适应调整学习率。
    • 批次训练:每批次7个样本,共训练20轮(epochs)。

5. 模型评估

  • 预测与阈值处理:对测试集预测概率大于0.5的样本判定为患病。
  • 性能指标
    • 混淆矩阵:计算真阳性、假阳性等分类结果。
    • 准确率:统计模型正确预测的比例。
# 导入必要库
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import confusion_matrix, accuracy_score
from keras.models import Sequential
from keras.layers import Dense

# 数据预处理
df = pd.read_csv('kidney_disease.csv')
to_drop = ['al','su','rbc','pc','pcc','ba','bgr','pcv','sod','pot','bu','wc','rc','htn','pe','ane']
df.drop(to_drop, axis=1, inplace=True)
df = df.dropna()  # 删除缺失值

# 分割特征与标签
X = df.drop(['id', 'classification'], axis=1)  # 假设标签列名是'classification'
y = df['classification'].apply(lambda x: 1 if x.lower().strip() == 'ckd' else 0)  # 处理标签格式

# 分类列处理
categorical_cols = ['dm', 'cad', 'appet']
for col in categorical_cols:
    # 清洗字符串数据(统一小写并去除空格)
    X[col] = X[col].astype(str).str.strip().str.lower()
    # 生成哑变量
    dummies = pd.get_dummies(X[col], prefix=col, drop_first=True)
    X = pd.concat([X, dummies], axis=1)
X = X.drop(categorical_cols, axis=1)

# 数据标准化
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1, stratify=y)  # 添加分层抽样
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)

# 模型构建
classifier = Sequential()
classifier.add(Dense(units=6, activation='relu', input_dim=X_train.shape[1], kernel_initializer='he_uniform'))  # 更合适的初始化方法
classifier.add(Dense(units=6, activation='relu', kernel_initializer='he_uniform'))
classifier.add(Dense(units=1, activation='sigmoid', kernel_initializer='he_uniform'))
classifier.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 训练
classifier.fit(X_train, y_train, batch_size=7, epochs=20)

# 评估
y_pred = classifier.predict(X_test) > 0.5
print("Confusion Matrix:\n", confusion_matrix(y_test, y_pred))
print("Accuracy:", accuracy_score(y_test, y_pred))

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

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

相关文章

I/O多路复用 + Reactor和Proactor + 一致性哈希

网络系统 1. I/O多路复用1)原始Socket模型通信方式2)多进程模型3)多线程模型4)I/O多路复用select/pollepoll边缘触发和水平触发 2. Reactor和Proactor1)Reactor模式2)Reactor模式四种方案3)单Re…

解决小程序video控件在真机和上线后黑屏不播放问题

小程序上线后,mp4格式的视频无法点击是黑屏,但是测试得时候在微信开发者工具中能够打开正常播放 原因:编码格式不能是vp9 微信开发者工具本地设置中把这个打开勾选。 排查:可以换一个视频尝试能不能真机播放,如果能&a…

java项目分享-分布式电商项目附软件链接

今天来分享一下github上最热门的开源电商项目安装部署,star 12.2k,自行安装部署历时两天,看了这篇文章快的话半天搞定!该踩的坑都踩完了,软件也打包好了就差喂嘴里。 项目简介 mall-swarm是一套微服务商城系统&#xf…

【LVS】负载均衡群集部署(DR模式)

部署前IP分配 DR服务器:192.168.166.101 vip:192.168.166.100 Web服务器1:192.168.166.104 vip:192.168.166.100 Web服务器2:192.168.166.107 vip:192.168.166.100 NFS服务器:192.168.166.108 …

链表的操作-反转链表

链表 160相交链表 代码 class Solution { public:ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {ListNode* h1headA;ListNode* h2headB;while(h1&&h2){if(h1!h2){h1h1->next;h2h2->next;}else{return h1;}}if(h1nullptr){h1headB;}else{h…

Linux安装Cmake (Centos 7.9)

cmake安装 这个虽然已经更新到了4.0.0版本了,但是我们要用3.5版本的,因为这个比较稳定 官方地址:https://github.com/Kitware/CMake/releases/tag/v3.5.0,选择那个cmake-3.5.0-Linux-x86_64.tar.gz下载, 首先解压文…

Node.js v22.14.0 多平台安装指南:Windows、Linux 和 macOS 详细教程

Node.js作为现代Web开发的基石,持续为开发者带来性能提升和新特性支持。本文将详细介绍在Windows、macOS和Linux系统上安装最新Node.js的多种方法,助您快速搭建高效的JavaScript开发环境。 📦 当前最新版本 截至2025年4月,Node.…

Netty源码—10.Netty工具之时间轮一

大纲 1.什么是时间轮 2.HashedWheelTimer是什么 3.HashedWheelTimer的使用 4.HashedWheelTimer的运行流程 5.HashedWheelTimer的核心字段 6.HashedWheelTimer的构造方法 7.HashedWheelTimer添加任务和执行任务 8.HashedWheelTimer的完整源码 9.HashedWheelTimer的总结…

鸿蒙项目笔记(1)

一、核心内容-商城 1、装饰器的拓展使用,基础组件的熟悉。 2、引入基础动画实战,页面属性动画、页面跳转动画、自定义页面翻页等。 3、一次开发,多端部署。 4、本地数据库实战,涉及多种本地数据存储方式。 5、路由导航&#…

*快排延伸-自省排序

此节是学有余力的人去看,如果没时间,不看也没关系,只要知道代码就可以了! 自省排序的思路是自我侦测和反省,快速排序如果递归深度太深,其算法的效率可能被大幅度削弱,这就需要借助其他的算法进…

三.微服务架构中的精妙设计:服务注册/服务发现-Eureka

一.使用注册中心背景 1.1服务远程调用问题 服务之间远程调⽤时, 我们的URL是写死的 String url "http://127.0.0.1:9090/product/" orderInfo.getProductId(); 缺点: 当更换机器, 或者新增机器时, 这个URL就需要跟着变更, 就需要去通知所有的相关服…

python-leetcode 63.搜索二维矩阵

题目: 给一个满足两条属性的m*n的整数矩阵: 每行中的整数从左到右按非严格递增顺序排列 每行的第一个整数大于前一行的最后一个整数 给一个整数target,如果target在矩阵中,返回true,否则返回false 方法一:两次二分查找 由于每…

音视频入门基础:MPEG2-TS专题(26)——通过FFmpeg命令使用RTP发送TS流

音视频入门基础:MPEG2-TS专题系列文章: 音视频入门基础:MPEG2-TS专题(1)——MPEG2-TS官方文档下载 音视频入门基础:MPEG2-TS专题(2)——使用FFmpeg命令生成ts文件 音视频入门基础…

blender二次元上色

前: 后:(脸自己会发光) 参考:05-模型导入与材质整理_哔哩哔哩_bilibili

2025年2月一区SCI-壮丽细尾鹩莺算法Superb Fairy-wren Optimization-附Matlab免费代码

引言 本期介绍一种新的元启发式算法——壮丽细尾鹩莺优化算法Superb Fairy-wren Optimization algorithm,SFOA。该算法结合了壮丽细尾鹩莺群体中幼鸟的发育,繁殖后喂养幼鸟的行为,以及它们躲避捕食者的策略,于2025年2月最新发表在…

Hadoop•踩过的SHIT

听说这里是目录哦 ssh登录Permission denied, please try again💩要发癫🥲 centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64💩FinalShell重连失效💩ssh免密登录显示 No route to host&#x1f4a…

闭环SOTA!北航DiffAD:基于扩散模型实现端到端自动驾驶「多任务闭环统一」

端到端自动驾驶目前是有望实现完全自动驾驶的一条有前景的途径。然而,现有的端到端自动驾驶系统通常采用主干网络与多任务头结合的方式,但是它们存在任务协调和系统复杂度高的问题。为此,本文提出了DiffAD,它统一了各种驾驶目标并…

Docker Registry 清理镜像最佳实践

文章目录 registry-clean1. 简介2. 功能3. 安装 docker4. 配置 docker5. 配置域名解析6. 部署 registry7. Registry API 管理8. 批量清理镜像9. 其他10. 参考registry-clean 1. 简介 registry-clean 是一个强大而高效的解决方案,旨在简化您的 Docker 镜像仓库管理。通过 reg…

JavaScript重难点突破:期约与异步函数

同步和异步 ​同步(Synchronous)​ ​定义:任务按顺序依次执行,前一个任务完成前,后续任务必须等待。 ​特点:阻塞性执行,程序逻辑直观,但效率较低 ​异步(Asynchron…

蓝桥杯高频考点——高精度(含C++源码)

高精度 前言高精度加法例题思路及代码solution 1(初阶版 40分)solution 2(完全体 AC) 高精度乘法例题思路及代码solution 1(TLE 但是代码很清晰)solution 1的问题solution 2(优化 AC&#xff09…