来源: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)
都属于V'x = 0
行,其中x = (1,x,y)
。点积为正的点落在线的一侧,负值落在另一侧。"
我不太明白它是如何工作的。此外,这一行特别是:
self.V = np.array([xB*yA-xA*yB, yB-yA, xA-xB])
为什么Bx
由yb-ya
决定?
为了它的价值,我学习了线性代数,所以我对数学概念非常熟悉(我意识到这是正常的),但它是如何完成的让我逃避。< / p>
答案 0 :(得分:0)
该文本假设线方程为:A + B*x + C*y = 0
我们假设我们有两个点,P1(x1, y1)
和P2(x2, y2)
使用two-points form of the line equation,您将获得y - y1 = [(y2 - y1)/(x2 - x1)] * (x - x1)
(基于P1
和P2
)
相同的等式可以发展为[(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])