本次做的项目是糖尿病的预测,也是来自kaggle上面的一个小项目。根据一个人的怀孕次数、血糖、血压、皮肤厚度、胰岛素指标、身体质量指数、糖尿病谱系指数、年龄等身体参数来预测一个人是否患有糖尿病。
老规矩,还是先讲数据集,数据集来自kaggle,这里附上链接(糖尿病数据集)。数据集是一个文本文件,总共有769行、9列数据。除第一行外,所有数据都是单精度浮点数,其中第一行是对数据集中各项身体参数的说明,所以在训练的时候要把第一行数据删除。数据集中前8列是上述的各项身体指标,最后一列是输出结果(标签),0表示未患有糖尿病,1表示患有糖尿病。
接下来是训练过程。第一步,导入需要用到的python包,这里我们要用numpy读取文本文件,DataLoader用来加载数据集,Dataset用来准备数据集,其中Dataset是一个抽象类,只能被继承,所以导入了之后,后面我们还要自己重写Dataset。
import torch
import numpy as np # 要用numpy读取文本数据
from torch.utils.data import DataLoader
from torch.utils.data import Dataset
第二步,重写Dataset,准备数据集。这里我们把用于处理训练集的数据集处理器命名为TrainDataset,创建一个类,继承自Dataset。所有继承自Dataset的类,我们都必须重写三个内置方法:__init__、__getitem__、__len__,分别是初始化函数、根据索引取值、获取数据长度。
在初始化中,我们需要用numpy中的loadtxt读取文本文件,文本文件中数据的分隔符为“,”,所以这里分隔符设置为delimiter=‘,’,数据类型设置为32位浮点数。通过这个操作,把文本文件加载成了一个768行*9列的numpy矩阵。其中前面8列是训练数据,最后一列是标签,所以我们用python的矩阵切片操作把数据集切成x和y,x表示训练数据,y表示标签。因为数据集没有给我们准备测试集,所以我们要自己准备测试集。按照训练集:测试集=9:1的比例,我们去掉数据集中的最后96行作为训练集,把最后96行作为测试集,进行切片。测试集的处理器配置采用相同的操作。

该文介绍了一个使用Python和PyTorch对糖尿病进行预测的项目。数据来源于Kaggle,通过训练集与测试集的划分,利用多层前馈神经网络进行建模,以Sigmoid为激活函数,BCELoss为损失函数,SGD为优化器。在训练结束后,模型最高达到75%的准确率,但由于数据量有限,存在过拟合问题。
&spm=1001.2101.3001.5002&articleId=129871563&d=1&t=3&u=bf44638bbc094a3389575f81e92be54d)
1万+

被折叠的 条评论
为什么被折叠?



