0

资料来源:http ://datasciencelab.wordpress.com/2014/01/10/machine-learning-classics-the-perceptron/

“给定其中两个点的直线的一般方程,(x1,y2)并且(x2,y2), 是A + Bx + Cy = 0其中A, B,C可以用两点来写。定义一个向量V = (A, B, C), 任何点都(x,y)属于该线 if V'x = 0, 其中x = (1,x,y). 点积为正面落在这条线的一侧,负面落在另一侧。”

我不太明白它是如何工作的。此外,特别是这一行:

self.V = np.array([xB*yA-xA*yB, yB-yA, xA-xB])

为什么由Bx决定yb-ya

对于它的价值,我正在学习线性代数,所以我对数学概念非常熟悉(我意识到它是一个正常的),但它是如何完成的却让我无法理解。

4

1 回答 1

0

为什么 B 由 yb - ya 决定?(或者更确切地说是 y2 - y1 对于我们的示例)

文本假设直线方程为:A + B*x + C*y = 0

假设我们从那条线上有两个点,P1(x1, y1)并且P2(x2, y2)

使用直线方程的两点形式,您将得到y - y1 = [(y2 - y1)/(x2 - x1)] * (x - x1)(基于P1P2

同样的方程,可以发展成[(x2 -x1)*y1 + (y1 - y2)*x1] + (y2 - y1) * x + (x1 - x2) * y = 0

看着A + B*x + C*y = 0,你会看到:

  • A, 是[(x2 -x1)*y1 + (y1 - y2)*x1] = x2*y1 - y2*x1

  • B, 的系数x(y2 - y1)

  • C, 的系数y(x1 - x2)

因此np.array([A, B, C])源代码中的值显示为np.array([xB*yA - xA*yB, yB - yA, xA - xB])

于 2014-10-12T05:54:35.470 回答