深度学习基于Keras的Python实践——印第安糖尿病人诊断

项目地址:https://github.com/abc222/MyDeepLearningStudy/tree/master/pima-indians

多层感知器

多层感知器是最简单的神经网络模型,用于处理机器学习中的分类和回归问题。通过Keras可以创建贯序模型(Sequential)和函数模型(Functional)。前者是多个网络层的线性堆叠,类名为Sequential,后者接口是用户定义多输出模型、非循环有向模型或具有共享层的模型等复杂模型的途径,类名为Model。

本节创建第一个神经网络模型:使用Pima Indians数据集,二元分类问题

(糖尿病为1或非糖尿病为0,描述每个患者的8个输入指标,具有不同的尺度)

数据集下载

csdn资源:https://download.csdn.net/download/qq_35008279/11122908
百度云链接:https://pan.baidu.com/s/1duoc2qaEyowuwWUs7gRs8Q 密码:pe9y

代码
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
# 设定随机数种子
np.random.seed(7)

# 导入数据
dataset = np.loadtxt('pima-indians-diabetes.csv', delimiter=',')
# 分割输入x和输出Y
x = dataset[:, 0 : 8]
Y = dataset[:, 8]

# 创建模型
model = Sequential()
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))

# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# 训练模型
model.fit(x=x, y=Y, epochs=150, batch_size=10)

# 评估模型
scores = model.evaluate(x=x, y=Y)
print('\n%s : %.2f%%' % (model.metrics_names[1], scores[1]*100))

结果
在这里插入图片描述

作出预测

参考 https://www.jianshu.com/p/589ed0a8137d

# calculate predictions
predictions = model.predict(X)
# round predictions
rounded = [round(x) for x in predictions]
print(rounded)

运行以上代码, 将会打印出每个输出的预测值。如果有需要的话, 我们可以直接使用这些预测。

小结

参考 http://blog.sina.com.cn/s/blog_8cb8ac330102yn7w.html

  • 在使用随机过程的机器学习算法时,最好使用固定随机数种子初始化随机数生成器,这样可重复地运行相同代码获得相同结果

  • np.loadtxt进行加载数据集

  • input_dim参数创建第一层,与数据维度一致

  • 寻找最优的网络拓扑结构是一个试错的过程,通过进行一系列的实验对找到最好网络很有启发

  • Keras中Dense类来定义完全连接层,参数unit,init,activation,权重初始化可以选择默认均衡,高斯分布

  • 激活函数ReLu,sigmoid

  • Sequential.add()函数添加层到模型

  • 训练一个神经网络模型,意味着找到最好的权重集来对这个问题作出预测

  • 模型编译,必须制定损失函数loss,搜索权重的优化器optimizer,以及希望在模型训练期间收集和报告的可选指标

  • 在Keras中,对于二进制分类问题的对数损失函数被定义为二进制交叉熵,此处使用的是有效的梯度下降算法Adam优化器,由于是分类问题,此处采用分类准确度作为度量模型的标准

  • 训练过程采用epochs参数对数据集进行固定次数的迭代,必须指定,还需设置执行神经网络中的权重更新的每个批次中所用实例的个数(batch_size),其值可通过试验和错误试验来选择合适的值。

  • 评估模型试验evaluate函数,此处使用的训练数据集相同,这个函数将产生每个输入和输出对的预测,并收集分数,包括平均损失和配置的任何指标,如精确度。

  • 使用了TensorFlow后端

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值