基于PIMA糖尿病数据集的Keras实用深度神经网络

今天我们将学习如何在实际数据集上编写神经网络。

当我们过去学习深度神经网络(DNN)时,我们直接使用在训练和测试中准备好数据,例如(MNIST手写数据集)通过我们的神经网络,但在这里,我们将准备使用PIMA糖尿病数据集,来创建我们的神经网络模型。

获取数据

这里我们将得到CSV数据集。数据可以从这里下载(https://github.com/vidit0210/PIMA-Diabetes-DNN/blob/master/diabetes.csv)。

现在让我们研究一下这个数据是关于什么:

数据集是关于一个二元分类分类数据集。在从更大的数据库中选择实例时,设置了一些约束。特别值得一提的是,这里所有的病人都是21岁以上的印度皮玛人后裔的女性。数据集是在UCI存储库中使用的。

基本上,我们得到了女性的数据集,我们必须预测她是否患有糖尿病。

Python编码

在这里,我将向您介绍如何制作DNN的Python教程。

首先,我们需要导入我们需要处理的所有有用的Python库

import pandas as pd

from keras.models import Sequential

from keras.layers import Dense

import numpy as np

from sklearn.model_selection import train_test_split

在这里,我们使用pandas读取数据集并执行行和列操作。用于构建我们的DNN,用于制作数组的numpy和sklearn将我们的数据分成训练和测试

现在让我们查看数据的前几行,Python代码如下:

dataframe = pd.read_csv("diabetes.csv")

dataframe.head()

基于PIMA糖尿病数据集的Keras实用深度神经网络

现在我们需要拆分我们的特征和标签。

我们可以看到结果列确定患者是否患有糖尿病(1-是,0-否)。其他列确定了预测必不可少的特征。

我们将数据拆分为特征[X]和标签[Y],并删除数据集中的缺失值。下面的Python代码完成所需的任务。

df_label = dataframe['Outcome']

df_features = dataframe.drop('Outcome', 1)

df_features.replace('?', -99999, inplace=True)

现在我们将对所有类型的标签进行one hot编码。例如,我们将1转换为[1,0],将0转换为[0,1]。Python代码如下:

label = []

for lab in df_label:

if lab == 1:

label.append([1, 0]) # class 1

elif lab == 0:

label.append([0, 1]) # class 0

基于PIMA糖尿病数据集的Keras实用深度神经网络

example of one hot encoding

现在我们将数据分成训练和测试集。Python代码如下:

data = np.array(df_features)

label = np.array(label)

x_train, x_test, y_train, y_test = train_test_split(data, label, test_size=0.2, random_state=42)

建立我们的神经网络

现在让我们看看构建神经网络的Python代码

model = Sequential()

model.add(Dense(500, input_dim=8, activation='sigmoid'))

model.add(Dense(100, activation='sigmoid'))

model.add(Dense(2, activation='softmax'))

model.compile(loss='mean_squared_error', optimizer='adam', metrics=['accuracy'])

model.fit(x_train,y_train, epochs=1000, batch_size=70, validation_data=(x_test, y_test))

在这里,我们已经创建简单的Keras神经网络,其中2个隐藏层(500和100),具有8个输入特征和2个标签来预测。

其他参考示例代码

feature_try = np.array([x_train[0]])

feature_try2 = np.array([x_train[1]])

result =model.predict_classes(feature_try2)

if result==0:

print("NO Diabetes")

else:

print("Diabetes")

相关推荐