【发布时间】:2009-11-08 02:21:56
【问题描述】:
我有三个数组(它是用 C 编写的,但这并不重要,它可以是任何语言):
float x[] = {
0.72, 0.91, 0.46, 0.03, 0.12, 0.96, 0.79, 0.46, 0.66, 0.72, 0.35, -0.16,
-0.04, -0.11, 0.31, 0.00, -0.43, 0.57, -0.47, -0.72, -0.57, -0.25,
0.47, -0.12, -0.58, -0.48, -0.79, -0.42, -0.76, -0.77
};
float y[] = {
0.82, -0.69, 0.80, 0.93, 0.25, 0.47, -0.75, 0.98, 0.24, -0.15, 0.01,
0.84, 0.68, 0.10, -0.96, -0.26, -0.65, -0.97, -0.03, -0.64, 0.15, -0.43,
-0.88, -0.90, 0.62, 0.05, -0.92, -0.09, 0.65, -0.76
};
int outputs[] = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
};
前两个数组是二维平面上一个点的 X 和 Y 坐标。
第三个数组决定点是来自集合 1 还是集合 -1。
我需要一个算法来线性地分离这两组点。 IE。它应该从这个方程返回 a 和 b 系数:
y = a*x + b
这是一个一般的直线方程。
看这里的第一张图片:
http://dynamicnotions.blogspot.com/2008/09/single-layer-perceptron.html
为了更好地了解我需要什么。
【问题讨论】: