当前位置: 首页 > news >正文

基于tfjs实现线性回归等基本模型

目录

1.回归模型基础概念与应用综述

1.1 线性回归(Linear Regression)

1.2 多元线性回归(Multiple Linear Regression)

1.3 广义线性回归(Generalized Linear Model, GLM)

1.4 逻辑回归(Logistic Regression)

1.5 最大熵模型(Maximum Entropy Model)

1.6 总结

2.多项式回归的实例

2.1 安装 Node.js

2.2 创建项目目录并初始化

2.3 安装 TensorFlow.js

2.4 创建 JavaScript 文件

2.5 运行代码

2.6 训练结果分析

3.Train MNIST with the Core API

3.1 安装与配置步骤

3.1.1 克隆代码仓库

3.1.2 进入项目目录

3.1.3 配置与运行项目

3.1.4 在浏览器中访问

3.1.5 实验结果与分析

4.基于 TensorFlow.js 实现线性回归的实验

4.1 访问实验页面

4.2 生成数据

4.3 训练模型

4.4 清除图表

4.5 结果分析

4.5.1 结果展示

4.5.2 结果分析


1.回归模型基础概念与应用综述

1.1 线性回归(Linear Regression)

定义:线性回归用于描述一个因变量(目标变量)与一个或多个自变量(特征)之间的线性关系。

数学表达式
y=b0+b1x+ϵ
其中,y 为目标变量,x 为特征变量,b0​ 是截距,b1​ 是系数,ϵ 是误差项。

用途:用于预测和分析两个变量之间的关系,如销售预测、趋势分析。

1.2 多元线性回归(Multiple Linear Regression)

定义:多元线性回归是一种线性回归模型,处理多个自变量(特征),预测一个因变量的值。

数学表达式
y=b0+b1x1+b2x2+⋯+bnxn+ϵ
其中,x1,x2,…,xn 是多个自变量,b0,b1,…,bn 是回归系数。

用途:适用于多个特征影响目标变量的情况,如房价预测(影响因素包括面积、位置、房龄等)。

1.3 广义线性回归(Generalized Linear Model, GLM)

定义:广义线性模型是对线性回归模型的推广,允许因变量服从非正态分布,如二项分布、泊松分布等。

结构

  • 链接函数:将线性组合映射到目标变量的分布空间。
  • 线性预测器:自变量的线性组合部分。

常见模型

  • 逻辑回归:用于二分类问题。
  • 泊松回归:用于计数数据。

1.4 逻辑回归(Logistic Regression)

定义:逻辑回归是一种分类模型,通过使用 Sigmoid 函数将回归结果映射到 0 到 1 之间,用于预测二分类或多分类问题的概率。

数学表达式
其中 z=b0+b1x1+⋯+bnxn​。

用途:常用于二元分类,如垃圾邮件检测、信用违约预测。

1.5 最大熵模型(Maximum Entropy Model)

定义:最大熵模型是一种基于最大熵原理的概率分类模型,适用于多分类任务。它假设在所有可能的概率分布中,应该选择熵最大的那个(即不偏不倚的分布)。

数学原理:该模型与逻辑回归在结构上相似,但目标是最大化信息熵。

用途:广泛用于自然语言处理(如词性标注、命名实体识别)和多分类问题。

1.6 总结

这些回归模型在数据建模中发挥了不同作用:

  • 线性回归和多元线性回归:处理自变量与因变量之间的线性关系。
  • 广义线性模型:进一步推广线性回归,适应不同类型的数据分布。
  • 逻辑回归和最大熵模型:用于分类问题,尤其是在二分类和多分类任务中表现优异。

2.多项式回归的实例

2.1 安装 Node.js

  • 如果你还没有安装 Node.js,请先从 Node.js 官网 下载并安装。

2.2 创建项目目录并初始化

创建文件夹tfjs。

2.3 安装 TensorFlow.js

npm install @tensorflow/tfjs

2.4 创建 JavaScript 文件

在项目目录下创建一个名为 line.js 的文件,并将代码粘贴到这个文件中。

// 引入 TensorFlow.js
const tf = require('@tensorflow/tfjs');// 构造训练数据:输入 x 和对应的输出 y
const xs = tf.tensor1d([0, 1, 2, 3, 4, 5]);
const ys = tf.tensor1d([1, 3, 7, 13, 21, 31]);// 定义模型:多项式回归 y = ax^2 + bx + c
const model = tf.sequential();
model.add(tf.layers.dense({units: 10, activation: 'relu', inputShape: [1]}));
model.add(tf.layers.dense({units: 1}));// 编译模型,指定损失函数和优化器
model.compile({loss: 'meanSquaredError',optimizer: 'sgd'
});// 模型训练函数
async function trainModel() {console.log('Training model...');await model.fit(xs, ys, {epochs: 500,callbacks: {onEpochEnd: (epoch, logs) => {console.log(`Epoch ${epoch + 1}: loss = ${logs.loss}`);}}});console.log('Training completed.');
}// 调用训练模型并进行预测
trainModel().then(() => {const output = model.predict(tf.tensor1d([6]));output.print();  // 输出模型对 x=6 的预测值
});

2.5 运行代码

在终端中运行以下命令:

node line.js

2.6 训练结果分析

  • 控制台会显示每个 epoch 的损失值,并最终输出对 x = 6 的预测结果。
  • 模型预测:对 x=6 的预测结果为 36.81
  • 预期结果:根据给定的训练数据趋势,理想预测值应为 37 左右。
  • 误差:预测值 36.81 与理想值 37 相比非常接近,误差为 0.19,表明模型已经很好地拟合了数据。

3.Train MNIST with the Core API

3.1 安装与配置步骤

3.1.1 克隆代码仓库

在终端(如 PowerShell、命令行或 VSCode 终端)中运行以下命令,克隆 TensorFlow.js 的示例项目:

git clone https://github.com/tensorflow/tfjs-examples.git

3.1.2 进入项目目录

cd tfjs-examples/mnist-core

3.1.3 配置与运行项目

方法任选一个

如果你使用yarn:

cd mnist-core

yarn

yarn watch

如果你使用 npm:

cd mnist-core

npm install

npm run watch

3.1.4 在浏览器中访问

在浏览器中访问:

http://localhost:1234

这会加载你的 TensorFlow.js 项目,并展示 MNIST 手写数字分类器的界面。

3.1.5 实验结果与分析

1. 训练过程与损失曲线分析

从第一张截图可以看到:

  • 损失值的变化:随着训练步骤的增加,损失值呈现出快速下降趋势,从初始的 2.0+ 降至 0.5 以下。这表明模型在训练过程中不断优化,逐渐学会了 MNIST 数据集的特征。

  • 轻微波动:在训练的过程中,损失值存在一些小幅度波动,说明模型在某些步骤上可能遇到了数据的复杂性,但整体趋势是在收敛。

2. 模型的测试准确率

  • 测试集准确率:在第二张截图中的 50 个测试样本中,有 47 个样本被正确分类,准确率为 94%

  • 错误分类示例:如红色标注的:

    • 一个 2 被错误识别为 3
    • 一个 8 被错误识别为 7
    • 一个 4 被错误识别为 1

这些错误表明,虽然模型已经学会了大部分数字的特征,但在某些情况下,数字的书写方式和笔迹差异仍会影响模型的判断。


4.基于 TensorFlow.js 实现线性回归的实验

4.1 访问实验页面

打开浏览器,访问 CodePen 示例。

4.2 生成数据

点击 “Generate Data” 按钮,激活生成数据点功能。

在画布上任意位置点击,会生成一个数据点并绘制在图表上。

4.3 训练模型

点击 “Train” 按钮,系统会使用生成的数据进行线性回归训练,并绘制拟合的回归线。

4.4 清除图表

点击 “Clear” 按钮,清除画布上的所有数据点和回归线,恢复画布初始状态。

4.5 结果分析

4.5.1 结果展示

数据点与拟合回归线

  • 上传的截图显示了多个随机生成的橙色数据点分布在坐标系中。数据点覆盖了不同区域,展示了用户与系统的交互效果。
  • 回归线成功绘制,并尽可能贴合这些数据点,显示了模型的良好拟合。

4.5.2 结果分析

拟合效果

  • 从结果可以看出,系统的线性回归模型能够较好地捕捉数据的线性趋势,并且回归线与大多数数据点接近重合,表明模型拟合效果良好。

交互与反馈

  • 系统的交互体验良好,用户可以通过简单的点击生成数据并立即训练模型。回归线的展示帮助用户直观地理解数据的趋势和模型的性能。

性能与问题

  • 虽然模型拟合效果良好,但如果数据点的分布存在较大的偏差,可能会导致模型的拟合效果下降。在实际应用中,可以通过增加训练轮数或更复杂的模型(如多项式回归)来优化结果。

http://www.mrgr.cn/news/55978.html

相关文章:

  • Unity中面试遇到的问题--C#--dynamic
  • Python 自编码器(Autoencoder)算法详解与应用案例
  • Java基础12-特殊文件和日志技术
  • 【ERROR】ubuntu source: not found
  • 算法笔记day05
  • 关于OpenRASP的功能二次开发
  • 哈希表模拟封装unordered_map和unordered_set
  • DLNA—— 开启智能生活多媒体共享新时代
  • 金蝶云星空与聚水潭的高效数据集成案例
  • sharpkeys-键盘部分按键不好用,用其它不常用按键代替
  • Etcd 可观测最佳实践
  • 100个人物介绍字幕动画PR视频模板MOGRT
  • Netty初体验-1-NIO基础补漏
  • 十行代码实现命令行书签
  • Linux使用nc(netcat)命令检测网络端口是否畅通以及Linux查看CPU架构命令arch及CentOS中取版本的问题
  • Spring AI : Java写人工智能的应用框架
  • 正大金融市场的跨境投资机遇与挑战分析
  • 【数字IC】【低功耗】UPF/CPF
  • 郑州网站制作优化你的网站以吸引流量
  • 机器人学习仿真框架
  • 骨传导耳机哪个牌子最好?真实测评五大年度热门单品机型
  • 【直播回放】达索系统赋能新电池产业链数字仿真一体化协同解决方案
  • 软件源码,招投标管理系统,询价管理系统,供应商管理系统,一体化管理系统,供应链管理(springboot+vue+mysql)
  • 2024年墨西哥金融科技报告解读(上)| 从基础到前沿(附下载)
  • sdads
  • SiLM266x系列SiLM2660CD-DG 可配置的电池组电压检测功能 高压电池组前端充/放电高边NFET驱动器