我有三个数组(它是用 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
为了更好地理解我需要什么。
最佳答案
我已经查看了第一页上的图表,但我仍然不清楚您实际想要的结果是什么。我的猜测是您想要最佳系数来近似“最适合”两组点的线性线?看来你的感知器的“神经网络”已经做到了。可能有助于澄清?
关于c# - 线性分开两组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1695135/