模式识别
神经网络(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
章节
144
阅读
0
评论
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈