使用神经网络(多层感知机)实现心脏病数据集分类任务

本文详细介绍了如何使用神经网络(多层感知机)对心脏病数据集进行预处理、模型搭建、训练及评估。在数据预处理阶段,包括读取数据、处理缺失值、标准化和主成分分析。模型训练后,通过混淆矩阵、ROC曲线和AUC面积进行模型效果评估。最终,模型在测试集上的准确率为79.12%。
摘要由CSDN通过智能技术生成

1、数据预处理

数据预处理首先需要到机器学习的网址(https://archive.ics.uci.edu/ml/machine-learning-databases/heart-disease/)选择processed.cleveland.data这个文件,然后复制到excel中,这个下载下来每一列是没有列名的,需要自己手动添加一下。如下图:
在excel中处理数据集

读取心脏病数据集

实验的环境是在jupyter notebook里面,可以及时进行交互,可以看到每一步的操作结果。(实验中会用到一些包,需要自己去下载)

import numpy as np
import pandas as pd
heart_dataset = pd.read_csv('newheart.csv')
print("Keys of heartstd_dataset: \n{}".format(heart_dataset.keys()))

读取数据集,然后输出数据集的属性名称。

对数据集中的缺失值进行处理

pd.set_option('display.max_rows',20) # 展示20行
heart_dataset

数据集概览可以观察到最后一行,倒数第三个数是一个缺失值。下面用代码看看,这个数据集里面一共有多少个缺失值。

heart_dataset.isnull().sum() # 查看数据集是否有缺失值

在这里插入图片描述
可以看到,一共有6个缺失值,对缺失值的补充要考虑属性,因为属性大多是类别的属性,所以对缺失值的处理就按照上一个值进行填充。代码如下:

## 使用上一个值替代
df=heart_dataset.fillna(method='ffill')

再使用代码查看是否有缺失值

df.isnull().sum() # 查看数据集是否有缺失值

在这里插入图片描述
如下代码可以查看数据集的属性:

df.info()

结果如下图:
在这里插入图片描述

对数据集进行标准化处理

可以发现数据集的各个属性的类型不统一,通过一开始的查看数据集,可以发现数据的取值范围也不统一,为了模型的方便处理,接下来对数据集进行标准化处理。

#标准化处理数据集
from sklearn.preprocessing import StandardScaler
x=df[df.columns[0:13]].values  #读取前13列的数据,并转换为array类型
x=StandardScaler().fit(x).transform(x) # 进行标准化处理
dfstd=pd.DataFrame(x) #把处理好的数据重新转为DataFrame类型
names=['age','sex','cp','trestbps','chol','fbs','restecg','thalach','exang','oldpeak','slope','ca','thal']
dfstd.columns=names #给标准化的数据添加列名
df['target'].replace([0,1],['no','yes'],inplace=True) #把target中的0替换为no,1替换为yes
dfstd['target']=df['target'] #把类别添加到标准化的数据集中

在这里插入图片描述在这里插入图片描述
通过上图可以发现,数据集已经进行了标准化的处理。

主成分分析

在一个数据集有众多的属性的时候,必然会有一些属性是用处不大的,都代入模型中,可能会造成模型的过拟合现象和训练时间比较长。可以通过主成分分析来选择出影响比较大的属性。

##主成分分析
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
from matplotlib.font_manager import FontProperties
plt.rcParams['font.sans-serif'] = 
  • 9
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值