Keras之对鸢尾花识别
Keras之队鸢尾花识别
任务目标
- 对鸢尾花数据集分析
- 建立鸢尾花的模型
- 利用模型预测鸢尾花的类别
环境搭建
pycharm编辑器搭建python3.*
第三方库
- numpy
- pandas
- sklearn
- keras
处理鸢尾花数据集
了解数据集
鸢尾花数据集是一个经典的机器学习数据集,非常适合用来入门。
鸢尾花数据集链接:下载鸢尾花数据集
鸢尾花数据集包含四个特征和一个标签。这四个特征确定了单株鸢尾花的下列植物学特征:
- 花萼长度
- 花萼宽度
- 花瓣长度
- 花瓣宽度
该表确定了鸢尾花品种,品种必须是下列任意一种:
- 山鸢尾 Iris-Setosa(0)
- 杂色鸢尾 Iris-versicolor(1)
- 维吉尼亚鸢尾 Iris-virginica(2)
数据集中三类鸢尾花各含有50个样本,共150各样本
下面显示了数据集中的样本:

机器学习中,为了保证测试结果的准确性,一般会从数据集中抽取一部分数据专门留作测试,其余数据用于训练。所以我将数据集按7:3(训练集:测试集)的比例进行划分。
数据集处理具体代码
# 读取数据集
iris = pd.read_csv("iris.data", header=None)
# 数据集转化成数组
iris = np.array(iris)
# 提取特征集
X = iris[:, 0:4]
# 提取标签集
Y = iris[:, 4]
# One-Hot编码
encoder = LabelEncoder()
Y = encoder.fit_transform(Y)
Y = np_utils.to_categorical(Y)
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.3)
return x_train,x_test,y_train,y_test
什么是one-hot编码?
One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。
One-Hot编码是将类别变量转换为机器学习算法易于利用的一种形式的过程。
比如:["山鸢尾","杂色鸢尾","维吉尼亚鸢尾"]---->[[1,0,0][0,1,0][0,0,1]]
建立模型和预测
设置超参数
# 超参数
epochs = 500 # 循环次数
validation_split = 0.05 # 学习率
test_size = 0.25 # 拆分数据集大小
dense1_neurons = 512 # 第一层神经元的数量
dense2_neurons = 256 # 第二层神经元的数量
dense3_neurons = 128 # 第三层神经元的数量
搭建模型
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(units=dense1_neurons,input_dim = 4,activation = 'relu'))
model.add(tf.keras.layers.Dense(units=dense2_neurons,activation='relu'))
model.add(tf.keras.layers.Dense(units=dense3_neurons,activation='relu'))
model.add(tf.keras.layers.Dense(units=3,activation="softmax"))
model.summary() # 查看模型结构
编译模型
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
训练模型
history = model.fit(x_train,y_train,validation_split=validation_split,epochs=epochs)
使用测试集进行评估
model.evaluate(x_test,y_test)
预测
target = model.predict(np.array([[7, 5.5, 6.5, 3.9]])).argmax()
print(target)
if target == 0:
print("Iris-setosa")
elif target == 1:
print("Iris-versicolor")
else:
print("Iris-virginica")
Keras之对鸢尾花识别的更多相关文章
- keras实现简单性别识别(二分类问题)
keras实现简单性别识别(二分类问题) 第一步:准备好需要的库 tensorflow 1.4.0 h5py 2.7.0 hdf5 1.8.15.1 Keras 2.0.8 opencv-p ...
- 【问题解决方案】Keras手写数字识别-ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接
参考:台大李宏毅老师视频课程-Keras-Demo 在载入数据阶段报错: ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接 Google之 ...
- 人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型
人脸检测及识别python实现系列(5)——利用keras库训练人脸识别模型 经过前面稍显罗嗦的准备工作,现在,我们终于可以尝试训练我们自己的卷积神经网络模型了.CNN擅长图像处理,keras库的te ...
- keras入门--Mnist手写体识别
介绍如何使用keras搭建一个多层感知机实现手写体识别及搭建一个神经网络最小的必备知识 import keras # 导入keras dir(keras) # 查看keras常用的模块 ['Input ...
- 100天搞定机器学习|day39 Tensorflow Keras手写数字识别
提示:建议先看day36-38的内容 TensorFlow™ 是一个采用数据流图(data flow graphs),用于数值计算的开源软件库.节点(Nodes)在图中表示数学操作,图中的线(edge ...
- 数据挖掘入门系列教程(十二)之使用keras构建CNN网络识别CIFAR10
简介 在上一篇博客:数据挖掘入门系列教程(十一点五)之CNN网络介绍中,介绍了CNN的工作原理和工作流程,在这一篇博客,将具体的使用代码来说明如何使用keras构建一个CNN网络来对CIFAR-10数 ...
- keras手写数字识别
import kerasimport timefrom keras.utils import np_utils start = time.time()(x_train, y_train), (x_te ...
- 【Keras篇】---Keras初始,两种模型构造方法,利用keras实现手写数字体识别
一.前述 Keras 适合快速体验 ,keras的设计是把大量内部运算都隐藏了,用户始终可以用theano或tensorflow的语句来写扩展功能并和keras结合使用. 二.安装 Pip insta ...
- 100天搞定机器学习|day40-42 Tensorflow Keras识别猫狗
100天搞定机器学习|1-38天 100天搞定机器学习|day39 Tensorflow Keras手写数字识别 前文我们用keras的Sequential 模型实现mnist手写数字识别,准确率0. ...
随机推荐
- GoAccess分析Web日志
简介 为什么要用GoAccess? GoAccess 被设计成快速的并基于终端的日志分析工具.其核心理念是不需要通过 Web 浏览器就能快速分析并实时查看 Web 服务器的统计数据(这对于需要使用 S ...
- Elasticsearch系列---生产集群的索引管理
概要 索引是我们使用Elasticsearch里最频繁的部分日常的操作都与索引有关,本篇从运维人员的视角,来玩一玩Elasticsearch的索引操作. 基本操作 在运维童鞋的视角里,索引的日常操作除 ...
- loadRunnner中90%的响应时间
参考博客https://blog.csdn.net/lengyue_112/article/details/1095320?utm_source=blogxgwz4 LR在场景执行完了会出个报告,其中 ...
- TestNG学习笔记新的
1.参考官方文档https://www.yiibai.com/html/testng/2013/0915300.html package com.cib.testng; import org.test ...
- linux网络编程-posix信号量与互斥锁(39)
-posix信号量信号量 是打开一个有名的信号量 sem_init是打开一个无名的信号量,无名信号量的销毁用sem_destroy sem_wait和sem_post是对信号量进行pv操作,既可以使用 ...
- 【故障公告】阿里云 RDS 实例 CPU 100% 故障引发全站无法正常访问
非常抱歉,今天凌晨 3:20~8:30 左右,我们使用的阿里云 RDS 实例 SQL Server 2016 标准版突然出现 CPU 100% 故障,造成全站无法正常访问,由此给您带来巨大的麻烦,请您 ...
- JDK8--07:并行流与串行流
JDK8中,提供了并行流和串行流,使用parallel()和sequential()来处理,parallel()为并行流sequential()为串行流,两者可以相互转换,以最后一个为准 LongSt ...
- 如何去除List集合中重复的元素
1.通过循环进行删除 public static void removeDuplicate(List list) { for ( int i = 0 ; i < list.size() - 1 ...
- Python抓取国家医疗费用数据:国家名、人均开销
前言 整个世界正被大流行困扰着,不同国家拿出了不同的应对策略,也取得了不同效果.这也是本文的脑洞来源,打算研究一下各国在医疗基础设置上的开支,对几个国家的医疗费用进行数据可视化. 由于没有找到最近一年 ...
- mac安装Hadoop,mysql,hive,sqoop教程
在安装Hadoop,mysql,hive之前,首先要保证电脑上安装了jdk 一.配置jdk 1. 下载jdk http://www.oracle.com/technetwork/java/javase ...