利用女性糖尿病人的有身次数、血糖、血压、皮脂厚度、胰岛素等特征通过BP神经网络来预测一个女性是否患有糖尿病,而且盘算出模型预测的正确率。通过女性糖尿病患者的一系列特征构建一个BP神经网络模型,通过该模型预测一名女性患有糖尿病的概率。
main.py
- #导入keras等模块
- from tensorflow.python.keras.models import Sequential
- from tensorflow.python.keras.layers import Dense
- import numpy as np
- from sklearn.model_selection import train_test_split
- import warnings
- warnings.filterwarnings('ignore')
- #导入女性糖尿病患者的特征数据
- dataset = np.loadtxt('pima-indians-diabetes.csv', delimiter=',')
- X = dataset[:, 0 : 8]
- Y = dataset[:, 8]
- # 将数据按照8:2比例分成训练集和测试集
- x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=1)
- print(x_train.shape)
- print(x_test.shape)
- # 创建BP神经网络
- model = Sequential()
- # 输入层8个变量,与数据维度一致
- # 第一个隐藏层有12个神经元,且采用ReLU激活函数,glorot均匀分布初始化器,偏差值初始为0
- model.add(Dense(12, input_dim=8, activation='relu', kernel_initializer='glorot_uniform', bias_initializer='zeros'))
- # 第二个隐藏层有8个神经元,且采用ReLU激活函数
- model.add(Dense(8, activation='relu'))
- # 输出层1个神经元,且采用Sigmoid激活函数
- model.add(Dense(1, activation='sigmoid'))
- #使用adam为优化器
- model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
- model.fit(x=x_train, y=y_train, epochs=150, batch_size=10)
- # 打印出模型每层权值
- print(model.trainable_weights)
- print(model.get_weights())
- # 评估模型
- scores = model.evaluate(x=x_test, y=y_test)
- print('\n%s : %.2f%%' % (model.metrics_names[1], scores[1]*100))
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |