模式识别
神经网络 用于面部识别等应用。
这些应用使用模式识别。
这种类型的分类 可以通过感知器 完成。
感知器可以用于将数据分类为两部分。
感知器也称为线性二元分类器。
模式分类
想象在一个空间中有一条直线(线性图),上面散布着 x y 点。
如何对线上的点进行分类?
感知器可以被训练来识别线上的点,而无需知道线的公式。
如何编程感知器
要编程感知器,我们可以使用一个简单的 JavaScript 程序,该程序将
- 创建一个简单的绘图器
- 创建 500 个随机 x y 点
- 显示 x y 点
- 创建一个线函数:f(x)
- 显示线
- 计算所需答案
- 显示所需答案
创建一个简单的绘图器
创建简单的绘图器对象在AI 画布章节 中有描述。
示例
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);
}
如何训练感知器
在下一章中,您将学习如何使用正确答案来
训练感知器 来预测未知输入值的输出值。