文章目录

  • 1、导入数据
  • 2、定义模型
  • 3、编译模型
  • 4、训练模型
  • 5、评估模型
  • 6、汇总代码

1、导入数据

在使用随机过程(如随机数)的机器学习算法时,最好使用固定随机种子初始化随机数生成器。这样就可以重复运行相同的代码,并得到相同的结果。
实例中使用Numpy的函数loadtxt()函数加载Piman Indians数据集。Piman Indians数据集有8个输入维度和1个输出维度(最后一列)

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]

2、定义模型

在Keras中,通常使用Dense类来定义完全连接的层。
在本例中,通过Sequential的add()函数将层添加到模型,并组合在一起。使用ReLU作为前两层的激活函数,使用sigmoid作为输出层的激活函数,第一个隐藏层有12个神经元,使用8个输出变量,第二隐藏层有8个神经元,最后输出层有1个神经元来预测数据结果(是否患有糖尿病),代码如下;

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

3、编译模型

模型定义好后,需要对模型进行编译,编译模型是为了使模型能够有效地使用Keras封装的数值进行计算。在编译模型时,必须指定用于评估一组权重的损失函数(loss)、用于搜索网络不同权重的优化器(optimizer),以及希望在模型训练期间收集和报告的可选指标。
在这个例子中使用对数损失函数,作为模型的损失函数。在Keras中,对于二分类问题的对数损失函数定义为二进制交叉熵。使用有效的梯度下降算法Adam作为优化器,这是一个有效的默认值。

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

4、训练模型

训练模型通过调用模型的fit()函数来实现。

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

5、评估模型

可以使用模型的evaluation()函数来评估模型的准确度。在这个实例中使用训练集来评估模型的准确度,因此传给evaluation()函数的数据集与用于训练模型的数据集相同。、

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

6、汇总代码

到这里已经完成了基于Keras构建的第一个神经网络。下面给出完整的代码,并运行这个模型,代码而下;

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))

运行结果:

【Keras】学习笔记2:第一个多层感知器实例:印第安人糖尿病诊断相关推荐

  1. 基于Keras的第一个多层感知器实例:印第安人糖尿病诊断

    本文将通过使用Keras构建一个简单的多层感知器,数据使用印第安人糖尿病诊断数据. 通过Keras构建深度学习模型的步骤如下: 定义模型--创建一个序贯模型并添加配置层 编译模型--指定损失函数和优化 ...

  2. 第一个多层感知器实例:印第安人糖尿病诊断

    多层感知器是最简单的神经网络模型,用于处理机器学习中的分类与回归问题. 第一个案例:印第安人糖尿病诊断 Pima Indians数据集:UCI Machine Learning免费下载的标准机器学习数 ...

  3. 深度学习02-神经网络(MLP多层感知器)

    文章目录 神经网络 简介 学习路径 分类 多层感知器(MLP) 神经网络认识 两层神经网络 输入层 从输入层到隐藏层 从隐藏层到输出层 激活层 输出的正规化 如何衡量输出的好坏 反向传播与参数优化 过 ...

  4. 深度学习入门系列1:多层感知器概述

    本人正在学习<deep learning with python>–Jason Brownlee,有兴趣的可以一起学习. 仅供学习参考,不做商用! 大家好,我技术人Howzit,这是深度学 ...

  5. 《Keras深度学习:入门、实战与进阶》之印第安人糖尿病诊断

    本文摘自<Keras深度学习:入门.实战与进阶>. 1.数据理解 本节使用Pima Indians糖尿病发病情况数据集.该数据集最初来自国家糖尿病/消化/肾脏疾病研究所.数据集的目标是基于 ...

  6. Keras多层感知器实例:印第安人糖尿病诊断

    本实例使用Keras在python中创建一个神经网络模型,这是一个简单的贯序模型,也是神经网络最常见的模型.本实例按照以下步骤创建: 1. 导入数据. 2.定义模型 3.编译模型 4.训练模型 5.评 ...

  7. 多层感知器用实际例子和Python代码进行解释情绪分析

    多层感知器用实际例子和Python代码进行解释情绪分析 多层感知器是一种学习线性和非线性数据之间关系的神经网络. 这是专门介绍深度学习系列的第一篇文章,深度学习是一组机器学习方法,其根源可以追溯到20 ...

  8. 【深度学习】学习案例:Keras 多层感知器手写数字识别

    实验:Keras 多层感知器 手写数字识别 1. 下载 MNIST数据集(前提) 2. 进行数据预处理 3. 建立模型 4. 进行训练 5. 以测试数据评估模型 6. 进行预测 拓展: 1. 显示混淆 ...

  9. 深度学习-Tensorflow2.2-深度学习基础和tf.keras{1}-多层感知器(神经网络)与激活函数概述-04

    多层感知器 计算输入特征得加权和,然后使用一个函数激活(或传递函数)计算输出. 单个神经元 多个神经元 单层神经元缺陷 多层感知器 多层感知器 激活函数 relu:曲线如下图,假如过来的函数是x当x小 ...

最新文章

  1. ADO.NET连接数据库总结
  2. 解读比特币白皮书:点对点电子现金系统
  3. UNIX再学习 -- 环境变量
  4. Visual C++中error spawning cl.exe解决办法
  5. 【WC2014】时空穿梭【组合数】【莫比乌斯反演】【整除分块】【暴力多项式】
  6. 短时程突触可塑性(short-term synaptic plasticity)
  7. (转)如何压缩SQL Server 2005指定数据库文件和日志的大小?
  8. 计算机学院科研,科研概况
  9. 挑战练习题2.3动态规划 poj3046 Ant Counting dp
  10. 塔吊安全智能监控系统智慧工地整体解决方案
  11. YOLO版本不兼容,报错AttributeError: Can’t get attribute ‘SPPF’ on <module ‘models.common’
  12. Access denied for user ‘bijian0530‘@‘localhost‘ (using password: YES)
  13. 七脉轮位置_[转载]地球的七大脉轮位置
  14. fio_generate_plots
  15. 象棋( Xiangqi, ACM/ICPC Fuzhou 2011, UVa1589)
  16. python定义变量取值范围_python怎么限定函数自变量取值范围?
  17. 锐捷路由器如何配置虚拟服务器,锐捷路由器配置命令完美宝典
  18. ABeam (德硕)News | 喜提「SAP BTP 最佳实施合作伙伴」奖项
  19. Unsupervised Domain Adaptation with Variational Approximation for Cardiac Segmentation
  20. C# 给自己的网址接入微信扫描登录入口

热门文章

  1. matlab怎么提取倍频,Matlab信号处理倍频程.docx
  2. 怎么在GitHub上下载代码
  3. 瞰源 | 当我们谈论开源时,我们在谈论什么?
  4. BGV方案简介(同态加密)
  5. 坦克项目的摄像机改进及殉爆效果开发记录——Unity随手记(2020.12.1)
  6. android多屏幕适配
  7. 游戏革命2023:AIGC拯救游戏厂商
  8. 计算机输入法切换用户,W7系统输入法切换的快捷键怎么修改
  9. 立创EDA画图过程,实际布线考虑,自动布线的多板框问题,自动布线
  10. 枚举法------《啊哈!算法》