神经网络鸢尾花分类

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计3077字,阅读大概需要3分钟
🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿
个人网站:https://jerry-jy.co/

神经网络鸢尾花分类

  • 神经网络鸢尾花分类
    • 一、任务需求
    • 二、任务目标
          • 1、掌握神经网络的构建
          • 2、掌握神经网络的编译
          • 3、掌握神经网络的训练
          • 4、掌握神经网络的概要输出
    • 三、任务环境
          • 1、jupyter开发环境
          • 2、python3.6
          • 3、tensorflow2.4
    • 四、任务实施过程
    • 五、任务小结

神经网络鸢尾花分类


一、任务需求

Iris 鸢尾花数据集是一个经典数据集,在统计学习和机器学习领域都经常被用作示例。数据集内包含 3 类共 150 条记录,每类各 50 个数据,每条记录都有 4 项特征:
iris是鸢尾植物,共4个特征:花萼长度、花萼宽度、花瓣长度、花瓣宽度,可以通过这4个特征预测鸢尾花卉属于(iris-setosa, iris-versicolour, iris-virginica)中的哪一品种。数据说明如下:

在这里插入图片描述

要求:利用Sequential模型神经网络使用Tensorflow实现鸢尾花分类模型构建与输出

二、任务目标

1、掌握神经网络的构建
2、掌握神经网络的编译
3、掌握神经网络的训练
4、掌握神经网络的概要输出

三、任务环境

1、jupyter开发环境
2、python3.6
3、tensorflow2.4

四、任务实施过程

1、导入鸢尾花分类所用到的模块

# 利用鸢尾花数据集,实现前向传播、反向传播,可视化loss曲线
# 导入所需模块
import tensorflow as tf
from sklearn import datasets
import numpy as np

2、加载鸢尾花的特征和标签

# 导入数据,分别为输入特征和标签
x_data = datasets.load_iris().data
y_data = datasets.load_iris().target

3、将特征数据和标签数据乱序

# 随机打乱数据(因为原始数据是顺序的,顺序不打乱会影响准确率)
# seed: 随机数种子,是一个整数,当设置之后,每次生成的随机数都一样
np.random.seed(116)  # 使用相同的seed,保证输入特征和标签一一对应
np.random.shuffle(x_data)
np.random.seed(116)
np.random.shuffle(y_data)
tf.random.set_seed(116)

4、构建全连接的神经网络,输出层为3个神经元,激活函数是softmax。即以概率的方式输出,正则化采用L2。

model = tf.keras.models.Sequential([
    tf.keras.layers.Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())
])

5、模型编译,采用的优化器是SGD,学习率是0.1。损失函数交叉熵,评价指标是准确率。

model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy'])

6、模型训练,数据的80%作为训练集,20%作为测试集。32条数据作为一个批次。一共500个批次。校验的频率是20个批次。

model.fit(x_data,y_data, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)
Epoch 1/500
4/4 [==============================] - 0s 2ms/step - loss: 2.8038 - sparse_categorical_accuracy: 0.3533
Epoch 2/500
4/4 [==============================] - 0s 1ms/step - loss: 1.0218 - sparse_categorical_accuracy: 0.6467
Epoch 3/500
4/4 [==============================] - 0s 1ms/step - loss: 0.9625 - sparse_categorical_accuracy: 0.6250
Epoch 4/500
4/4 [==============================] - 0s 1ms/step - loss: 0.6996 - sparse_categorical_accuracy: 0.6875
Epoch 5/500
4/4 [==============================] - 0s 1ms/step - loss: 1.0346 - sparse_categorical_accuracy: 0.6067
Epoch 6/500
4/4 [==============================] - 0s 1ms/step - loss: 0.7820 - sparse_categorical_accuracy: 0.6165
Epoch 7/500
4/4 [==============================] - 0s 1ms/step - loss: 0.6032 - sparse_categorical_accuracy: 0.7129
Epoch 8/500
4/4 [==============================] - 0s 1ms/step - loss: 0.5836 - sparse_categorical_accuracy: 0.7369
Epoch 9/500
4/4 [==============================] - 0s 3ms/step - loss: 0.5972 - sparse_categorical_accuracy: 0.7352
Epoch 10/500
4/4 [==============================] - 0s 1ms/step - loss: 0.6684 - sparse_categorical_accuracy: 0.6694
Epoch 11/500
4/4 [==============================] - 0s 1ms/step - loss: 0.8877 - sparse_categorical_accuracy: 0.6708
Epoch 12/500
4/4 [==============================] - 0s 1ms/step - loss: 0.5393 - sparse_categorical_accuracy: 0.7542
Epoch 13/500
...
Epoch 499/500
4/4 [==============================] - 0s 1ms/step - loss: 0.3691 - sparse_categorical_accuracy: 0.9306
Epoch 500/500
4/4 [==============================] - 0s 14ms/step - loss: 0.3634 - sparse_categorical_accuracy: 0.9304 - val_loss: 0.3516 - val_sparse_categorical_accuracy: 0.8667
Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...

<tensorflow.python.keras.callbacks.History at 0x7fe4545077f0>

7、模型概要,打印模型的参数信息。

model.summary()
Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_2 (Dense)              (None, 3)                 15        
=================================================================
Total params: 15
Trainable params: 15
Non-trainable params: 0
_________________________________________________________________

8、我们将模型封装成一个类,d1为该类的方法,为全连接的输出层3个神经元,正则化为L2正则化。激活函数为sigmod函数。

from tensorflow.keras import Model
from tensorflow.keras.layers import Dense
class IrisModel(Model):
    def __init__(self):
        super(IrisModel, self).__init__()
        self.d1 = Dense(3, activation='softmax', kernel_regularizer=tf.keras.regularizers.l2())

    def call(self, x):
        y = self.d1(x)
        return y

9、模型的构建

model = IrisModel()

10、模型编译,采用SGD优化器,学习率为0.1,损失函数为交叉熵,以概率方式输出。评价指标是准确率。

model.compile(optimizer=tf.keras.optimizers.SGD(lr=0.1),
              loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
              metrics=['sparse_categorical_accuracy'])

11、模型训练。数据的80%作为训练集,20%作为测试集。32条数据作为一个批次。一共500个批次。校验的频率是20个批次。

model.fit(x_data, y_data, batch_size=32, epochs=500, validation_split=0.2, validation_freq=20)
Epoch 1/500
4/4 [==============================] - 0s 2ms/step - loss: 6.3509 - sparse_categorical_accuracy: 0.3127
Epoch 2/500
4/4 [==============================] - 0s 1ms/step - loss: 1.0127 - sparse_categorical_accuracy: 0.6658
Epoch 3/500
4/4 [==============================] - 0s 1ms/step - loss: 0.8219 - sparse_categorical_accuracy: 0.6871
Epoch 4/500
4/4 [==============================] - 0s 1ms/step - loss: 0.6942 - sparse_categorical_accuracy: 0.7735
Epoch 5/500
4/4 [==============================] - 0s 1ms/step - loss: 0.8788 - sparse_categorical_accuracy: 0.6363
Epoch 6/500
4/4 [==============================] - 0s 1ms/step - loss: 0.6772 - sparse_categorical_accuracy: 0.7940
Epoch 7/500
4/4 [==============================] - 0s 1ms/step - loss: 0.5831 - sparse_categorical_accuracy: 0.7408
Epoch 8/500
4/4 [==============================] - 0s 1ms/step - loss: 0.5659 - sparse_categorical_accuracy: 0.8356
Epoch 9/500
4/4 [==============================] - 0s 1ms/step - loss: 0.5365 - sparse_categorical_accuracy: 0.7850
Epoch 10/500
4/4 [==============================] - 0s 2ms/step - loss: 0.5922 - sparse_categorical_accuracy: 0.6813
Epoch 11/500
4/4 [==============================] - 0s 1ms/step - loss: 0.8033 - sparse_categorical_accuracy: 0.6656
Epoch 12/500
4/4 [==============================] - 0s 1ms/step - loss: 0.5156 - sparse_categorical_accuracy: 0.7573
Epoch 13/500
...
Epoch 499/500
4/4 [==============================] - 0s 1ms/step - loss: 0.3696 - sparse_categorical_accuracy: 0.9392
Epoch 500/500
4/4 [==============================] - 0s 13ms/step - loss: 0.3643 - sparse_categorical_accuracy: 0.9304 - val_loss: 0.3525 - val_sparse_categorical_accuracy: 0.8667
Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...

<tensorflow.python.keras.callbacks.History at 0x7fe4544a2e48>

12、模型概要,输出模型的参数。

model.summary()
Model: "iris_model_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
dense_3 (Dense)              multiple                  15        
=================================================================
Total params: 15
Trainable params: 15
Non-trainable params: 0
_________________________________________________________________

五、任务小结

本节完成了使用TensorFlow实现鸢尾花分类。在此过程中,我们对鸢尾花数据读取、划分特征数据和标签数据,同时对鸢尾花数据乱序。构建全连接网络,网络模型编译、训练和输出模型信息。同时我们也对网路模型进行了封装,调用封装后的类来完成神经网络的构建、编译、训练和概要输出。通过本节任务需要掌握以下知识:

  • 神经网络的构建
  • 神经网络的编译
  • 神经网络的训练
  • 神经网络的概要输出

–end–

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/572167.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【超简单实用】Zotero 7 内置pdf背景颜色更改插推荐以及安装

Zotero beta7 pdf 内置颜色更换 zetore 6 很多成熟的插件在 zetore 7都不能用了。版本回退看起来内置文章的注释会被消除&#xff0c;所以又不想退回去。前几个月在找beta 7 的pdf 护眼色的插件一直没有&#xff0c;今天终于发现了&#xff01;&#xff01;&#xff01;&#…

《架构风清扬-Java面试系列第26讲》聊聊的LinkedBlockingQueue的特点及使用场景

LinkedBlockingQueue也是BlockingQueue接口的一个实现类之一 这个属于基础性问题&#xff0c;老规矩&#xff0c;我们将从使用场景和代码示例来进行讲解 来&#xff0c;思考片刻&#xff0c;给出你的答案 1&#xff0c;使用场景 实现&#xff1a;基于链表实现的阻塞队列&#…

Django5框架之多重继承

在Django模型中也支持使用多重继承&#xff0c;这点与Python语法中的继承是一致的。Django模型多重继承就是同时继承多个父类模型&#xff0c;父类中第一个出现的基类&#xff08;如&#xff1a;Meta类&#xff09;是默认被使用的。如果存在多个父类包含Meta类的情况&#xff0…

Redis - Set 集合

前言 集合类型可保存多个字符串类型的元素&#xff0c;但和列表类型不同的是&#xff0c;集合中的元素之间是⽆序的&#xff08;顺序不重要&#xff0c;变换一下集合中的数据顺序&#xff0c;集合不会发生改变&#xff09; 的并且元素不允许重复 ⼀个集合中最多可以存储 2^32-1…

echarts 堆叠柱状图 顶部添加合计

堆叠有3个&#xff0c;后面加了一个对象显示顶部的数据&#xff0c; 其实主要的代码还是在series 的第四项&#xff0c;需要注意的是 series的第四项中的data需要为 data: [0, 0, 0] 顶部的统计才能显示出来 增加的代码如下 {name: 综合,type: bar,stack: total,label: {sh…

基于springboot+vue+Mysql的篮球竞赛预约平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

STM32 HAL库F103系列之DAC实验(二)

DAC输出正弦波实验 实验简要 1&#xff0c;功能描述 通过DAC1通道1(PA4)输出正弦波&#xff0c;然后通过DS100示波器查看波形 2&#xff0c;使用定时器7 TRGO事件触发转换 TEN1位置1、TSEL1[2:0]010 3&#xff0c;关闭输出缓冲 BOFF1位置1 4&#xff0c;使用DMA模式 DMAE…

无人机+遥控器:工业级手持地面站(支持安卓系统)功能技术详解

手持地面站是一种专为无人机设计的便携式设备&#xff0c;用于实现飞行控制、任务规划、数据链路通信等功能。由于支持安卓系统&#xff0c;这种地面站设备在软件生态上具有极大的灵活性&#xff0c;能够兼容并运行众多基于安卓平台的无人机控制应用程序。 在硬件方面&#xff…

vue中的mixin(局部混入、全局混入)

一、mixin是什么 Mixin是面向对象程序设计语言中的类&#xff0c;提供了方法的实现。其他类可以访问mixin类的方法而不必成为其子类&#xff1b;Mixin类通常作为功能模块使用&#xff0c;在需要该功能时“混入”&#xff0c;有利于代码复用又避免了多继承的复杂 Vue中的mixin…

如何在 Ubuntu 14.04 上配置 StatsD 以收集 Graphite 的任意统计数据

介绍 Graphite 是一个图形库&#xff0c;允许您以灵活和强大的方式可视化不同类型的数据。它通过其他统计收集应用程序发送给它的数据进行图形化。 在之前的指南中&#xff0c;我们讨论了如何安装和配置 Graphite 本身&#xff0c;以及如何安装和配置 collectd 以编译系统和服…

python实现视频剪辑

即刻关注&#xff0c;获取更多 实现目标 因上传某盘等文件大小限制&#xff0c;无法上传视频&#xff0c;故需要对视频进行压缩 参考资料 ffmpeg文档参考: https://ffmpeg.org/ffmpeg.html 依赖条件 已经安装好python3.11 &#xff0c;原则上更高版本也可以 安装 ffmpeg 依赖 p…

21.3K star!推荐一款可视化自动化测试/爬虫/数据采集神器!功能免费且强大!

大家好&#xff0c;我是狂师&#xff01; 在大数据时代&#xff0c;信息的获取与分析变得尤为重要。对于开发者、数据分析师乃至非技术人员来说&#xff0c;能够高效地采集网络数据并进行分析是一个强有力的工具。今天&#xff0c;我要向大家推荐的是一款功能强大、操作简单且…

线上申报开放时间!2024年阜阳市大数据企业培育认定申报条件、流程和材料

2024年阜阳市大数据企业培育认定申报条件、流程和材料&#xff0c;线上申报开放时间整理如下 一、2024年阜阳市大数据企业培育认定申报要求 &#xff08;一&#xff09;经营范围 申请认定的企业应当从事以下生产经营活动&#xff1a; 1.从事数据收集、存储、使用、加工、传输、…

HotSpot JVM 中的应用程序/动态类数据共享

0.前言 本文的目的是详细讨论 HotSpot JVM 自 JDK 1.5 以来提供的一项功能&#xff0c;该功能可以减少启动时间&#xff0c;但如果在多个 JVM 之间共享相同的类数据共享 (CDS) 存档&#xff0c;则还可以减少内存占用。 1.类数据共享 (CDS) CDS 的想法是使用特定格式将预处理…

多分辨率展开

1.,首先这个图居然给出了基和对偶基相等这个概念。我需要说明一下这个概念的来源。 1.1.,对偶基一开始是来自高等代数的线性空间&#xff0c;然后是泛函分析中的赋范线性空间的共轭空间。至于基的概念&#xff0c;赋范线性空间并没有&#xff0c;可能是因为正交需要内积来定义&…

Python基础知识(二)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》 《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 1.输入和输出函数1.1输出函数1.2输入函数 2.常见运算符2.1赋值运算符2.2比较运算符2.3逻辑运算符2.4and逻辑与2.5or逻辑或2.6not逻…

超纯水抛光树脂MB-115的使用及装填注意事项

用前须知 01.抛光树脂是由高度纯化、转型的H型阳树脂和OH型阴树脂混合而成&#xff0c;如果装填和操作得当&#xff0c;在最初的周期中即可制备出电阻率大于18.0MΩcm和TOC小于10ppb的超纯水&#xff0c;无需化学再生。 02.树脂开封后长时间暴露在空气中会吸收二氧化碳&#…

k8s日常动手实践 ~~ pod访问 pod请求 k8s api ~ 含新版带curl的busybox镜像

前言&#xff1a; 可以使用 Kubernetes API 获取集群信息。使用 Service Account&#xff08;SA&#xff09;进行身份验证&#xff0c;可以以安全的方式访问 Kubernetes API&#xff0c;而无需在 Pod 中使用明文凭据。 以下是一个使用 Service Account 访问 Kubernetes API 获…

HAWE比例多路阀驱动放大器

HAWE比例多路阀驱动放大器是一种在工程机械和工业自动化领域中广泛使用的高精度控制元件&#xff0c;它通过电气信号来控制流体的流动方向、流量及压力等参数。多路比例阀品牌技术的核心在于高性能、低成本、智能化控制、高频响、安全性以及技术创新等方面。这些技术的发展不仅…

Web前端开发之HTML_1

第一个前端程序VS Code安装VS Code 快捷键 1. 第一个前端程序 使用记事本&#xff0c;新建一个文本文档&#xff0c;重命名为Welcome.html&#xff0c;如下图&#xff1a; 用记事本打开文档&#xff0c;内容输入如下&#xff1a; <html> <head> <t…