模式识别
神经网络用于面部识别等应用。
这些应用程序使用模式识别。
这种类型的分类可以使用感知器来完成。
感知器可用于将数据分类为两部分。
感知器也称为线性二元分类器。
模式分类
想象一下空间中一条直线(线性图)上有散布的 x y 点。
你如何对线上方和下方的点进行分类?
感知器可以训练识别线上方的点,而无需知道线的公式。
如何编程感知器
为了编程一个感知器,我们可以使用一个简单的 JavaScript 程序,它将
- 创建一个简单的绘图仪
- 创建 500 个随机的 x y 点
- 显示 x y 点
- 创建一条线函数:f(x)
- 显示线
- 计算所需答案
- 显示所需答案
创建一个简单的绘图仪
在人工智能画布章节中描述了如何创建简单的绘图仪对象。
示例
const plotter = new XYPlotter("myCanvas");
plotter.transformXY();
const xMax = plotter.xMax;
const yMax = plotter.yMax;
const xMin = plotter.xMin;
const yMin = plotter.yMin;
创建随机 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;
}
创建一条线函数
在绘图仪中显示线
计算正确答案
根据线函数计算正确答案
y = x * 1.2 + 50。
如果 y 在线上方,所需答案为 1;如果 y 在线下方,则为 0。
将所需答案存储在一个数组中(desired[])。
示例
let desired = [];
for (let i = 0; i < numPoints; i++) {
desired[i] = 0;
if (yPoints[i] > f(xPoints[i])) {desired[i] = 1;}
}
显示正确答案
对于每个点,如果 desired[i] = 1,则显示一个黑点;否则显示一个蓝点。
示例
for (let i = 0; i < numPoints; i++) {
let color = "blue";
if (desired[i]) color = "black";
plotter.plotPoint(xPoints[i], yPoints[i], color);
}
如何训练感知器
在下一章中,您将学习如何使用正确答案来
训练感知器来预测未知输入值的输出值。