TensorFlow.js机器学习预测鸢尾花种类

 更新时间:2022年11月21日 11:59:48   作者:.Thinking.  
TensorFlow.js是一个开源的基于硬件加速的JavaScript库,用于训练和部署机器学习模型。本教程将会带大家简单了解和使用TensorFlow.js框架实现预测鸢尾花种类

一、加载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动图有点模糊,可以自己动手试试看哦。

到此这篇关于TensorFlow.js机器学习预测鸢尾花种类的文章就介绍到这了,更多相关TensorFlow.js预测鸢尾花内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript中String对象的方法介绍

    JavaScript中String对象的方法介绍

    本文主要对JavaScript中String对象的方法进行介绍。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-01-01
  • JS如何判断移动端访问设备并解析对应CSS

    JS如何判断移动端访问设备并解析对应CSS

    本文为大家详细介绍下JS如何判断移动端访问设备并解析对应CSS,感兴趣的朋友可以参考下
    2013-11-11
  • 基于JS实现导航条flash导航条

    基于JS实现导航条flash导航条

    flash导航条在网站建设中应用比较广泛,此种效果给浏览者带来极好的视觉效果,非常棒,下面小编给大家介绍基于JS实现导航条flash导航条,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
    2016-06-06
  • 60行js代码实现俄罗斯方块

    60行js代码实现俄罗斯方块

    这篇文章主要介绍了60行js代码实现俄罗斯方块,可能会有些小bug,不过总体上还是比较不错的。大伙来研究下代码,给出意见。
    2015-03-03
  • JavaScript中16进制颜色与rgb颜色互相转换的示例代码

    JavaScript中16进制颜色与rgb颜色互相转换的示例代码

    这篇文章主要介绍了JavaScript中16进制颜色与rgb颜色互相转换的示例代码,通过示例代码介绍了JS 颜色16进制、rgba相互转换问题,感兴趣的朋友一起看看吧
    2024-01-01
  • 微信小程序学习笔记之获取位置信息操作图文详解

    微信小程序学习笔记之获取位置信息操作图文详解

    这篇文章主要介绍了微信小程序学习笔记之获取位置信息操作,结合实例形式分析了微信小程序获取位置信息的原理、步骤及相关操作注意事项,并结合图文形式予以说明,需要的朋友可以参考下
    2019-03-03
  • 小程序实现投票进度条

    小程序实现投票进度条

    这篇文章主要为大家详细介绍了小程序实现投票进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • HTTP HEAD请求的使用场合实例详解

    HTTP HEAD请求的使用场合实例详解

    这篇文章主要为大家介绍了HTTP HEAD请求的使用场合实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Layui事件监听的实现(表单和数据表格)

    Layui事件监听的实现(表单和数据表格)

    这篇文章主要介绍了Layui事件监听的实现(表单和数据表格),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Bootstrap简单表单显示学习笔记

    Bootstrap简单表单显示学习笔记

    这篇文章主要为大家分享了Bootstrap简单表单显示学习笔记,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11

最新评论