| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 深度学习入门系列4:项目:用深度学习识别鸢尾花种类 -> 正文阅读 |
|
[人工智能]深度学习入门系列4:项目:用深度学习识别鸢尾花种类 |
系列文章目录深度学习入门系列1:多层感知器概述 文章目录在这个项目教程中,你将学习如何在多分类问题上使用Keras构建和评估神经网络模型。一步步完成教程后,你将了解:
让我们开始。 4.1鸢尾花分类数据集在这个教程中,我们将使用标准机器学习案例,叫做鸢尾花数据集。对于练习神经网络,这个数据集值得很好的研的案例,因为四个输入变量都是数字而且有同样的单位厘米。每个实例为描述观察到的花测量的属性,输出变量是特定的鸢尾花种类。这个数据集的属性总结如下:
这是一个多分类问题,意味着不止一个类要预测,实际上有三种花。这个很典型的分类问题,可以在这上面练习神经网络,因为三种类型的值需要特定的处理。下面是150个样本中前5个:
鸢尾花数据集是很好的研究案例,而且我们期望获取模型精度在95%-97%之间。当我门开发我们的模型,它提供了一个很好的目标。本书提供的样本代码中提供了数据集。你也可以从UCI机器学习仓库中下载鸢尾花数据集,并把以iris.csv名字放入你当前的工作目录中。你可以从UCI机器学习仓库首页中了解更多关于鸢尾花分类数据集。 4.2 导入类和函数我们从导入本节课所需要的类和函数开始,包括我们需要的Keras功能,但是从Pandas数据加载并准备数据和scikit-learn中的模型评估。
14.3 初始化随机生成器接下来我们需要初始化随机生成器为常数,这对于再次准确地获取模型的结果是很重要的。她也确保训练网络模型的随机过程具有可复制性。
4.4 加载数据数据集直接加载,因为输出变量包含字符,所以通过pandas加载数据是最容易。我们能把属性(列)划分为输入变量(X)和输出变量(Y)
4.5 对输出变量进行编码输出变量包含三个不同字符类型的值。当使用神经网络对多分类问题建模时,重新把输出属性从每种类别中包含字符串转成每类为布尔型的矩阵是一种很好的做法,给定实例是否有该类值。这操作叫做one-hot 编码或者从分类变量中创建虚拟变量。例如,在这个问题上,三类值分别为Iris-setosa,Iris-versicolor 和 Iris-virginica。如果我们有三观察值:
我们把每个数据实例转成一个像下面的one-hot 二维矩阵。
我们首先使用scikit-learn类中LabelEncoder将字符转为整型。使用Keras中to_categorical()函数把整型向量转成one-hot编码。
4.6 定义神经网络模型正如前面课前学到的,Keras 库提供了封装类,允许你在scikit-learn中使用Keras构建的深度学习模型。在Keras中有个KerasClassifier类,在scikit-learn中它被用于的估计器,在库中也是基本模型类型。KerasClassifier把函数名作为参数,这个函数必须返回结构化的神经网络,准备开始训练。 下面函数将这对鸢尾花分类问题建立一个基准的神经网络模型,创建了一个简单全连接神经网络,有四个神经元的隐藏层和输入层(可以有任意个数神经元)。隐藏层使用整流器(rectifier)激活函数,有着很好的表现。对于鸢尾花数据集我们采用one-hot编码,输出层必须创建三个输出值,每个类一个。输出值最大的那个就是预测类别。这个简单一层神经网络拓扑结构总结如下:
值得注意我们在输出端使用sigmoid激活函数。这确保了输出值在0-1之间,被用作预测的概率。最后网络使用的高效的ADAm梯度下降优化算法和对数损失函数,我们在Keras中称之为categorical_crossentropy。
我们现在创建KerasClassifier并在scikit-learn中使用。我们在KerasClassifier结构中传入的参数也将传入到fit() 中,用于内部训练神经网络。当我们训练网络时,传入nb_epoch为200,batch_size 为5 。当我们训练时设置verbose为0,关闭了调试模式。
4.7 用K-折交叉验证评价模型现在我们可以在训练集上评价神经网络模型。scikit-learn库使用一套技术来评价模型,有着出色的表现。评价机器学习模型的黄金标准是K-折交叉验证。首先我们定义评估流程。在这,我们设置折数为10(一个优秀的默认值)并在划分之前随机打乱数据。
现在我们能在数据集(X和dummy_Y)上使用10-fold交叉验证(kfold)程序评价我们的模型(estimator)。评价模型仅需要10秒并返回一个对象,该对象描述了对每种数据划分的10种有结构模型的评估。
为了完整,下面列出了所有代码:
结果归纳为在数据集上的均值和在模型准确率的标准差。在未知数据上,模型性能的估计是合理的。对于这个问题也是我们所知道最好的结果。
4.8 总结在这节课,你已经学习了如何通过Keras Python库构建和评估神经网络。完成这个教程后,你已经学到:
4.8.1 接下来这是你的第一个在单独的数据集上使用Keras的端到端项目。在接下来的课程,你将针对二分类问题构建神经网络模型并调节它们来提高模型性能。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 16:36:58- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |