神经网络鸢尾花分类

2024-04-25 10:52

本文主要是介绍神经网络鸢尾花分类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计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.chinasem.cn/article/934481

相关文章

基于人工智能的图像分类系统

目录 引言项目背景环境准备 硬件要求软件安装与配置系统设计 系统架构关键技术代码示例 数据预处理模型训练模型预测应用场景结论 1. 引言 图像分类是计算机视觉中的一个重要任务,目标是自动识别图像中的对象类别。通过卷积神经网络(CNN)等深度学习技术,我们可以构建高效的图像分类系统,广泛应用于自动驾驶、医疗影像诊断、监控分析等领域。本文将介绍如何构建一个基于人工智能的图像分类系统,包括环境

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

图神经网络模型介绍(1)

我们将图神经网络分为基于谱域的模型和基于空域的模型,并按照发展顺序详解每个类别中的重要模型。 1.1基于谱域的图神经网络         谱域上的图卷积在图学习迈向深度学习的发展历程中起到了关键的作用。本节主要介绍三个具有代表性的谱域图神经网络:谱图卷积网络、切比雪夫网络和图卷积网络。 (1)谱图卷积网络 卷积定理:函数卷积的傅里叶变换是函数傅里叶变换的乘积,即F{f*g}

用Pytho解决分类问题_DBSCAN聚类算法模板

一:DBSCAN聚类算法的介绍 DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一种基于密度的聚类算法,DBSCAN算法的核心思想是将具有足够高密度的区域划分为簇,并能够在具有噪声的空间数据库中发现任意形状的簇。 DBSCAN算法的主要特点包括: 1. 基于密度的聚类:DBSCAN算法通过识别被低密

机器学习之监督学习(三)神经网络

机器学习之监督学习(三)神经网络基础 0. 文章传送1. 深度学习 Deep Learning深度学习的关键特点深度学习VS传统机器学习 2. 生物神经网络 Biological Neural Network3. 神经网络模型基本结构模块一:TensorFlow搭建神经网络 4. 反向传播梯度下降 Back Propagation Gradient Descent模块二:激活函数 activ

PMP–一、二、三模–分类–14.敏捷–技巧–看板面板与燃尽图燃起图

文章目录 技巧一模14.敏捷--方法--看板(类似卡片)1、 [单选] 根据项目的特点,项目经理建议选择一种敏捷方法,该方法限制团队成员在任何给定时间执行的任务数。此方法还允许团队提高工作过程中问题和瓶颈的可见性。项目经理建议采用以下哪种方法? 易错14.敏捷--精益、敏捷、看板(类似卡片)--敏捷、精益和看板方法共同的重点在于交付价值、尊重人、减少浪费、透明化、适应变更以及持续改善等方面。

【python计算机视觉编程——8.图像内容分类】

python计算机视觉编程——8.图像内容分类 8.图像内容分类8.1 K邻近分类法(KNN)8.1.1 一个简单的二维示例8.1.2 用稠密SIFT作为图像特征8.1.3 图像分类:手势识别 8.2贝叶斯分类器用PCA降维 8.3 支持向量机8.3.2 再论手势识别 8.4 光学字符识别8.4.2 选取特征8.4.3 多类支持向量机8.4.4 提取单元格并识别字符8.4.5 图像校正

图神经网络框架DGL实现Graph Attention Network (GAT)笔记

参考列表: [1]深入理解图注意力机制 [2]DGL官方学习教程一 ——基础操作&消息传递 [3]Cora数据集介绍+python读取 一、DGL实现GAT分类机器学习论文 程序摘自[1],该程序实现了利用图神经网络框架——DGL,实现图注意网络(GAT)。应用demo为对机器学习论文数据集——Cora,对论文所属类别进行分类。(下图摘自[3]) 1. 程序 Ubuntu:18.04

PMP–一、二、三模–分类–14.敏捷–技巧–原型MVP

文章目录 技巧一模14.敏捷--原型法--项目生命周期--迭代型生命周期,通过连续的原型或概念验证来改进产品或成果。每个新的原型都能带来新的干系人新的反馈和团队见解。题目中明确提到需要反馈,因此原型法比较好用。23、 [单选] 一个敏捷团队的任务是开发一款机器人。项目经理希望确保在机器人被实际建造之前,团队能够收到关于需求的早期反馈并相应地调整设计。项目经理应该使用以下哪一项来实现这个目标?

基于深度学习 卷积神经网络resnext50的中医舌苔分类系统

项目概述 本项目旨在通过深度学习技术,特别是利用卷积神经网络(Convolutional Neural Networks, CNNs)中的ResNeXt50架构,实现对中医舌象图像的自动分类。该系统不仅能够识别不同的舌苔类型,还能够在PyQt5框架下提供一个直观的图形用户界面(GUI),使得医生或患者能够方便地上传舌象照片并获取分析结果。 技术栈 深度学习框架:采用PyTorch或其他