TensorFlow.js预测鸢尾花种类

2023-11-20

 源码连接:TensorFlow.js实现鸢尾花种类预测-机器学习文档类资源-CSDN下载

一、加载IRIS数据集

创建index.html入口文件,跳转到script主文件。

<script src="script.js"></script>

在script.js文件夹中利用预先准备好的脚本生成鸢尾花数据集,包括训练集和验证集,并打印查看。

import {getIrisData, IRIS_CLASSES} from "./data.js";

window.onload = () => {
    // 加载数据
    const [xTrain, yTrain, xTest, yTest] = getIrisData(0.2);
    // 打印查看数据集
    xTrain.print();
    yTrain.print();
    xTest.print();
    yTest.print();
    // 打印鸢尾花种类类别
    console.log(IRIS_CLASSES);

}

getIrisData(0.2):获取数据集的时候,将20%的数据当成测试集,剩下的80%当成训练集。

xTrain:训练集的特征值。 

yTrain:训练集的目标值。

xTest:验证集的特征值。  

yTest:验证集的目标值。 

 可以在控制台查看到结果:

其中特征矩阵里面的四个值分别表示:花萼的长度、花萼的宽度、花瓣的长度、花瓣的宽度。

目标值矩阵采用one-hot编码形式。

二、定义模型结构

初始化一个神经网络模型,为神经网络模型添加两层,配置模型的损失函数、激活函数、优化器、添加准确度度量。

// 定义网络模型
const model = tf.sequential();
// 添加隐藏层
model.add(tf.layers.dense({
    units: 10,
    inputShape: [xTrain.shape[1]],
    activation: 'relu'
}));

// 添加输出层 
model.add(tf.layers.dense({
    units: 3,
    activation: 'softmax'
}));

// 配置模型
model.compile({
    loss: "categoricalCrossentropy",
    optimizer: tf.train.adam(0.1),
    metrics: ['accuracy']
});

三、训练模型并可视化

训练结果需要等待,所以采用异步方式训练。

await model.fit(xTrain, yTrain,{
    epochs: 100,
    batchSize: 32,
    validationData: [xTest, yTest],
    callbacks: tfvis.show.fitCallbacks(
         {name: '训练效果'},
         ['loss', 'val_loss', 'acc', 'val_acc'],
         {callbacks: ['onEpochEnd']}
    )
}); 


训练结果:

 

 四、预测

编写前端界面输入待预测数据,使用训练好的模型进行预测,将输出的Tensor转成普通数据并显示。

在index.html中编写form表单,用来输入预测数据。

<form action="" onsubmit="predict(this); return false">
    花萼长度:<input type="text" name="a"><br>
    花萼宽度:<input type="text" name="b"><br>
    花瓣长度:<input type="text" name="c"><br>
    花瓣宽度:<input type="text" name="d"><br>
    <button type="submit">预测</button>
</form>

输入数据的顺序不能错,因为我们训练数据的顺序就是花萼长度、花萼宽度、花瓣长度、花瓣宽度。 

 在Script.js中编写predict预测函数。

 window.predict = (form) => {
        // 将表单获取的到数据转成Tensor
        const input = tf.tensor([[
            form.a.value * 1,
            form.b.value * 1,
            form.c.value * 1,
            form.d.value * 1,
        ]]);
        // 预测
        const pred = model.predict(input);
        alert(`预测结果:${IRIS_CLASSES[pred.argMax(1).dataSync(0)]}`)
    }

预测结果:gif动图有点模糊,可以自己动手试试看哦。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TensorFlow.js预测鸢尾花种类 的相关文章

随机推荐

  • 【数据结构】哈夫曼编码与前缀编码

    1 前缀编码 首先对于一个串可以用等长的二进制位表示 这样就叫做固定长度编码 如果可以用不等长的二进制位表示 则称之为可变长度编码 那么对于那些频度高的字符我们采用短二进制位编码 出现频度低的采用长二进制位编码的话 将会极大地减少编码长度
  • Win2012服务器 远程桌面帐户允许多用户同时登录的配置方法(2个用户)

    打开任务栏左下角的 服务器管理器 在左侧列表中选中 本地服务器 然后将右侧 远程桌面 功能的选项修改为 启用 注意取消下面复选框的选中状态 修改本地组策略 允许远程桌面帐户的多用户访问 同时按住 Win键 R 组合键调出运行窗口 输入 gp
  • MySQL cmd窗口输入密码后闪退

    最近重新使用回 MySQL 到官网下载客户端版 MySQL Installer 进行安装时 已经设置过 root 密码为 123456 第一次用 cmd 登录时成功 然后再安装 MySQL Workbench 进行连接 却报了错误 auth
  • 基本的Java的MVC入门案例

    概念 MVC Model View Controller 模型 视图 控制器 他是一种专门设计web程序的模式 高内聚 低耦合 高内聚 专人干专事 低耦合 让类与类之间的关系不能太紧密 模型 Model 是应用程序中与处理应用程序数据逻辑的
  • React抽离组件到独立的JS文件中

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 React学习记录 一 抽离组件到独立的JS文件中 1 先创建一个Hello js 2 再创建一个index js文件 React学习记录 一 抽离组件到独立的JS
  • PHP is_array()函数详解,PHP判断是否为数组

    作者主页 士别三日wyx 作者简介 CSDN top100 阿里云博客专家 华为云享专家 网络安全领域优质创作者 推荐专栏 对网络安全感兴趣的小伙伴可以关注专栏 网络安全入门到精通 is array 一 基本使用 二 空数组 三 同时判断多
  • 字节对齐规则和位域

    字节对齐规则 结构体的起始存储位置必须是能够被该结构体中最大的数据类型所整除 每个数据成员存储的起始位置是自身大小的整数倍 比如int在32位机为4字节 则int型成员要从4的整数倍地址开始存储 结构体总大小 也就是sizeof的结果 必须
  • matlab 因果分析,matlab非参数的格兰杰因果分析

    代码1 deseason m function rp vp deseason data textdata days flipud textdata 1 days days 1 end 1 volume flipud data 5 price
  • Vue如何将数据显示在页面中

    如何将data的数据显示在页面中 1 文本插值 div msg div 渲染结果 div hello world div 2 原始HTML插值 v html v text 区别 v text不会对标签进行转义而v html会对标签进行一次转
  • QT笔记——初识QHostInfo、QHostAddress、QNetworkInterface

    网络模块需要在 pro文件中添加 QT network QHostInfo 利用操作系统提供的查询机制来查询与特定主机名相关联的主机的 IP 地址 头文件 include
  • Js中的defer属性和async属性

    Js中的defer属性和async属性 一 defer和async 1 defer 指外部js文件和当前html页面同时加载 异步加载 但只在当前页面解析完成之后执行js代码 async 指外部js文件和当前html页面同时加载 异步加载
  • Redhat Add and Remove Software[No Groups Available in any repository ]

    在 etc yum repos d中把rhel debuginfo repo 修改一下 enabled 1 修改为 enabled 1
  • Java 实现令牌桶限流算法 原生极简实现 包括单机和多线程版本

    文章目录 令牌桶算法简介 令牌桶算法限流范围 单机版实现 多线程版实现 令牌桶算法简介 令牌桶是指一个限流容器 容器有最大容量 每秒或每100ms产生一个令牌 具体取决于机器每秒处理的请求数 当容量中令牌数量达到最大容量时 令牌数量也不会改
  • Python中访问类中的私有变量的两种方法

    我们知道 类中的私有变量是不能直接在类外访问或修改的 因此我们可以设置一个get函数和一个set函数来间接访问和修改私有属性 那么每次访问和修改的都需要调用函数 有没有更简单的方法呢 下面介绍两种方法 1 property 属性函数 比如P
  • 如何保证数据产出质量简述

    如何保证数据产出质量简述 数据质量的评估 数据质量的保障 数据产出流程 机制 revire机制 数据质量保障中的工具 规则 SQLSCAN DQC 基线 数据质量的评估 数据质量可以从一下几个角度进行评估 完整性 完整性是指数据的记录和信息
  • ECG信号三大主要噪声-基线漂移,工频干扰,肌电干扰

    1 基线漂移 基线漂移属于 低频干扰 呼吸的节奏 四肢动作以及前端处理电路设计 都有可能造成基线漂移 致使原始ECG信号漂移之后的 幅度达到R波最大幅值的0 1 0 2倍 ECG信号的一般采用是 粘贴式或吸球式 电极来采集信号 那么存在于体
  • 请关闭该文件夹或文件,然后重试 怎么处理?

    一 打开任务管理器 性能 gt 打开资源监视器 选择CPU gt 搜索句柄中填入文件夹名称 右击结束进程 就能进行操作了
  • 【Linux入门教程】2 文件权限和访问模式、环境变量、管道和过滤器

    Linux文件权限和访问模式 为了更加安全的存储文件 Linux为不同的文件赋予了不同的权限 每个文件都拥有下面三种权限 所有者权限 文件所有者能够进行的操作 组权限 文件所属用户组能够进行的操作 外部权限 其他权限 其他用户可以进行的操作
  • QT编程之信号和槽机制知识

    qt知识总结 一 常见的父窗口有3类 1 QWidget 它是所有对象的基类 继承自QOject和OPaintDevice 2 QMainWindow 它提供了一个主要的应用窗口 可以用来构建APP的应用界面 3 QDialog 对话框 其
  • TensorFlow.js预测鸢尾花种类

    源码连接 TensorFlow js实现鸢尾花种类预测 机器学习文档类资源 CSDN下载 一 加载IRIS数据集 创建index html入口文件 跳转到script主文件 在script js文件夹中利用预先准备好的脚本生成鸢尾花数据集