CNN卷积神经网络模型-03.糖尿病模型

一、目的:
设计模型
训练参数
调参及性能
保存模型及参数以后备用

二、数据集:
糖尿病012健康指标BRFSS2015.csv是美国疾病控制与预防中心BRFSS2015的253680份调查回复的干净数据集。目标变量Diabetes_012有3个类。0表示无糖尿病或仅在妊娠期间,1表示糖尿病前期,2表示糖尿病。 该数据集有21个特征变量。
diabetes_012_health_indicators_BRFSS2015_train.csv(24.5万)
diabetes_012_health_indicators_BRFSS2015_val.csv(1万)
========================================================================================================================================
Diabetes_012,HighBP,HighChol,CholCheck,BMI,Smoker,Stroke,HeartDiseaseorAttack,PhysActivity,Fruits,Veggies,HvyAlcoholConsump,AnyHealthcare,NoDocbcCost,GenHlth,MentHlth,PhysHlth,DiffWalk,Sex,Age,Education,Income
0.0,1.0,1.0,1.0,40.0,1.0,0.0,0.0,0.0,0.0,1.0,0.0,1.0,0.0,5.0,18.0,15.0,1.0,0.0,9.0,4.0,3.0
0.0,0.0,0.0,0.0,25.0,1.0,0.0,0.0,1.0,0.0,0.0,0.0,0.0,1.0,3.0,0.0,0.0,0.0,0.0,7.0,6.0,1.0
0.0,1.0,1.0,1.0,28.0,0.0,0.0,0.0,0.0,1.0,0.0,0.0,1.0,1.0,5.0,30.0,30.0,1.0,0.0,9.0,4.0,8.0
0.0,1.0,0.0,1.0,27.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,1.0,0.0,2.0,0.0,0.0,0.0,0.0,11.0,3.0,6.0
0.0,1.0,1.0,1.0,24.0,0.0,0.0,0.0,1.0,1.0,1.0,0.0,1.0,0.0,2.0,3.0,0.0,0.0,0.0,11.0,5.0,4.0
0.0,1.0,1.0,1.0,25.0,1.0,0.0,0.0,1.0,1.0,1.0,0.0,1.0,0.0,2.0,0.0,2.0,0.0,1.0,10.0,6.0,8.0
......
========================================================================================================================================
各个列含义
Income
Income scale (INCOME2 see codebook) scale 1-8 1 = less than $10,000 5 = less than $35,000 8 = $75,000 or more
Education
Education level (EDUCA see codebook) scale 1-6 1 = Never attended school or only kindergarten 2 = elementary etc.
Age
13-level age category (_AGEG5YR see codebook) 1 = 18-24 9 = 60-64 13 = 80 or older
Sex
0 = female 1 = male
DiffWalk

这段代码实现了一个基于卷积神经网络CNN)的糖尿病预测模型,使用PyTorch框架进行训练和评估。代码首先导入必要的库,包括matplotlib用于可视化、numpy和pandas用于数据处理、torch用于深度学习框架搭建,以及sklearn的KFold用于交叉验证。数据从'diabetes.csv'文件中读取,特征和标签分别存储在X和y中,并转换为PyTorch张量。模型的核心是DiabetesCNN类,这是一个1D卷积神经网络,包含两个卷积层(分别使用16和32个滤波器,核大小为3)、最大池化层(核大小为2)、两个全连接层(64和2个神经元)以及ReLU激活函数和Dropout层(0.2的丢弃率)用于防止过拟合。模型的前向传播过程依次通过卷积、池化、展平和全连接层,最终输出二分类结果。 训练过程采用5折交叉验证来评估模型性能,每折训练50个epoch,批量大小为32。训练过程中记录了每个epoch的训练和验证损失及准确率,并保存最佳验证准确率。优化器使用Adam,学习率设为0.001,损失函数为交叉熵损失。训练结束后,代码绘制了训练和验证的损失及准确率曲线,展示模型在不同折上的表现,并计算平均准确率和标准差。结果显示模型在交叉验证中的平均性能,为评估提供了可靠依据。 最后,代码在所有数据上训练最终模型,保存模型参数到'diabetes_cnn_model_final.pth'文件。整个流程展示了从数据加载、模型构建、训练评估到最终模型保存的完整机器学习流程,突出了交叉验证在模型评估中的重要性,以及CNN在结构化数据分类任务中的应用潜力。通过可视化训练曲线,可以直观地观察模型的学习过程和泛化能力,为后续调优提供参考。该实现充分利用了PyTorch的灵活性和GPU加速(如果可用),确保了高效训练。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值