这段代码实现了一个基于卷积神经网络(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加速(如果可用),确保了高效训练。
2025-05-13 13:06:51
352KB
1