2016-02-29 105 views
2

我有一組數據點(40×2)的,我已經衍生其中這樣最終的決定邊界下式:繪製線性決策邊界

wk*X + w0 = 0 

wk是一個1× 2向量和X是距離數據點集合的2 x 1個點;基本上是X = (xi,yi),其中i = 1,2,...,40。我的值爲wkw0

我想繪製線wk*X + w0 = 0但我不知道如何繪製實際線條。在過去,我通過查找數據點的最小值和最大值並將它們連接在一起來完成此操作,但這絕對不是正確的方法。

回答

3

wk*X僅僅是兩個矢量之間的點積,所以該等式變爲:

w1*x + w2*y + w0 = 0 

...假定一般的點(x,y)。如果我們重新排列該方程式並求解y,我們得到:

y = -(w1/w2)*x - (w0/w2) 

這樣,其中斜率是-(w1/w2)與截距-(w0/w2)這限定了線的方程式。你所要做的就是在一定範圍內定義一堆線性間隔的點,取每個點並將其代入上述方程並得到一個輸出。您可以在圖中標出所有這些輸出點以及實際點本身。您可以將點之間的空間或分辨率設置得足夠小,以便在將所有點連接在一起時可以看到一條線。

要確定此線的範圍或限制,請確定數據中最小和最大的值,並在它們之間定義一組線性間隔的點,並使用我們剛剛討論的線的方程式繪製線關於。

像這樣可以工作假設你有存儲在X點的矩陣因爲你已經提到的,和w1w2在載體wk定義和w0被分別定義:

x = linspace(min(X(:,1)), max(X(:,1))); 
y = -(wk(1)/wk(2))*x - (w0/wk(2)); 
plot(X(:,1), X(:,2), 'b.', x, y); 

linspace確定從開始到結束的線性間隔點陣列,並且默認生成100個點。然後,我們創建給定這些點的線的輸出值,並將這些點的藍色以及線本身繪製在這些點的頂部。

+0

謝謝你,這非常直截了當! – newb

+0

我是新來的,我該怎麼做? – newb

+1

哦,開玩笑,我想通了 – newb