主题
  • 默认模式
  • 浅蓝色模式
  • 淡绿色模式
  • 深夜模式

模式识别

神经网络(Neural Networks)被广泛应用于人脸识别等模式识别(Pattern Recognition)任务中。这类分类任务可以通过感知机(Perceptron)来实现。感知机是一种线性二分类模型,能够将输入的数据划分为两个类别。

接下来,将以JavaScript语言为例,完整演示感知机(Perceptron)的编程实现监督训练全流程。


模式分类

想象一下,在一个具有分散x y点的空间中,有一条直线(线性图)。

你如何对线上和线下的点进行分类?

散点图

感知机可以通过训练来识别直线上方的点,不需要知道直线的方程。

感知机偏置


感知机编程

下面我们基于JavaScript语言来实现感知机编程,步骤如下:

  • 创建一个简单的绘图器
  • 生成500个随机二维坐标点 (x,y)
  • 定义线性判别函数 f(x) = wx + b
  • 计算理论分类标签
  • 呈现理论分类标签

1. 创建一个简单的绘图器

创建一个简易绘图器对象的方法,在Graph Canvas章节中有详细描述。

const plotter = new XYPlotter("myCanvas");
plotter.transformXY();

const xMax = plotter.xMax;
const yMax = plotter.yMax;
const xMin = plotter.xMin;
const yMin = plotter.yMin;

2. 生成500个随机二维坐标点 (x,y)

根据需要,生成任意数量的xy坐标点:

将x值设为随机数(范围0至最大值),将y值设为随机数(范围0至最大值),并在绘图器中显示这些点。

实例代码 运行代码
复制
const numPoints = 500;
const xPoints = [];
const yPoints = [];
for (let i = 0; i < numPoints; i++) {
    xPoints[i] = Math.random() * xMax;
    yPoints[i] = Math.random() * yMax;
}

3. 定义线性判别函数 f(x) = wx + b

在绘图器中渲染该线下判别函数 f(x) = wx + b

实例代码 运行代码
复制
function f(x) {
    return x * 1.2 + 50;
}

4. 计算理论分类标签

根据线性决策函数y = 1.2x + 50,计算理论分类结果:

  • 若样本点的y > 1.2x + 50,标记为 1(正例)
  • 若样本点的y < 1.2x + 50,标记为 0(负例)

将分类结果存储至数组desired[]

let desired = [];
for (let i = 0; i < numPoints; i++) {
    desired[i] = 0;
    if (yPoints[i] > f(xPoints[i])) {desired[i] = 1;}
}

5. 呈现理论分类标签

根据理论分类标签desired[]进行差异化渲染:

  • 正例样本(desired[i] = 1):用 ● 黑色圆点标记
  • 负例样本(desired[i] = 0):用 ○ 蓝色圆点标记
实例代码 运行代码
复制
for (let i = 0; i < numPoints; i++) {
    let color = "blue";
    if (desired[i]) color = "black";
    plotter.plotPoint(xPoints[i], yPoints[i], color);
}

感知机训练方法

在下一章节中,您将学习如何利用已知的理论分类标签:训练感知机模型,使其能够预测未知输入数据对应的输出值。



评论区 0
发表评论
教程介绍
机器学习是人工智能的子领域,通过算法让计算机从数据中自动学习规律,并做出预测或决策。
29 章节
117 阅读
0 评论