📜  使用 ANN 预测心脏病

📅  最后修改于: 2022-05-13 01:55:34.191000             🧑  作者: Mango

使用 ANN 预测心脏病

深度学习是一种模仿人脑的技术,因为它由具有多层的多个神经元组成,就像人脑一样。这样形成的网络由一个输入层、一个输出层和一个或多个隐藏层组成。网络尝试从输入的数据中学习,然后相应地执行预测。最基本的神经网络类型是 ANN(人工神经网络)。 ANN 没有任何特殊的结构,它只是由多个用于预测的神经层组成。
让我们建立一个模型,通过使用 ANN 来预测一个人是否患有心脏病。

关于数据:
在数据集中,我们有13列,其中我们被赋予了不同的属性,例如性别、年龄、胆固醇水平等,并且我们得到了一个目标列,它告诉我们该人是否患有心脏病。我们会将所有列保留为除目标列之外的自变量,因为它将是我们的因变量。我们将建立一个人工神经网络,根据该人的其他属性来预测一个人是否患有心脏病。

你可以在这里找到数据集心脏病数据集

代码:导入库
import tensorflow as tf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import keras
from keras.models import Sequential
from keras.layers import Dense
from sklearn.metrics import confusion_matrix

代码:导入数据集

data = pd.read_csv('heart.csv')
data.head()

资料说明:

data.describe()

代码:检查空值

data.isnull().any()


分配因变量和自变量

X = data.iloc[:,:13].values
y = data["target"].values

代码:将数据拆分为训练和测试数据集

X_train,X_test,y_train, y_test = train_test_split(X,y,test_size = 0.3 , random_state = 0 )

代码:缩放数据。

from sklearn.preprocessing import StandardScaler
sc = StandardScaler()
X_train = sc.fit_transform(X_train)
X_test = sc.transform(X_test)


代码:构建模型

classifier = Sequential()
classifier.add(Dense(activation = "relu", input_dim = 13, 
                     units = 8, kernel_initializer = "uniform"))
classifier.add(Dense(activation = "relu", units = 14, 
                     kernel_initializer = "uniform"))
classifier.add(Dense(activation = "sigmoid", units = 1, 
                     kernel_initializer = "uniform"))
classifier.compile(optimizer = 'adam' , loss = 'binary_crossentropy', 
                   metrics = ['accuracy'] )

代码:拟合模型

classifier.fit(X_train , y_train , batch_size = 8 ,epochs = 100  )


代码:执行预测和重新缩放

y_pred = classifier.predict(X_test)
y_pred = (y_pred > 0.5)

代码:混淆矩阵

cm = confusion_matrix(y_test,y_pred)
cm

代码:准确性

accuracy = (cm[0][0]+cm[1][1])/(cm[0][1] + cm[1][0] +cm[0][0] +cm[1][1])
print(accuracy*100)


我们将获得大约 85% 左右的准确率。