2015-11-25 139 views
1

enter image description here
我的數據
炔銠Y2
1 1 1.166666667 1
-1 2 0.5 1
-1 3 0.333333333 1
-1 4 0.166666667 1
1 5 1.666666667 2
1 6 1.333333333 1
-1 7 0.333333333 1
-1 8 0.333333333 1
1 9 0.833333333 1
1 10 2 0.333333333 2
-1 12 0.166666667 1
1 13 0.666666667 1
1 14 0.833333333 1
1 15 0.833333333 1
-1 16 0.333333333 1
-1 17 0.166666667 1
1 19 0.833333333 1
1 20 1.333333333 1
1 21 1.333333333 1
-1 22 0.166666667 1
-1 23 0.166666667 1
-1 24 0.333333333 1
-1 25 0.166666667 1
-1 26 0.166666667 1
-1 27 0.333333333 1
-1 28 0.166666667 1
-1 29 0.166666667 1
-1 30 0.5 1
1 31 0.833333333 1
-1 32 0.166666667 1
-1 33 0.333333333 1
-1 34 0.166666667 1
-1 35 0.166666667 1如何在MATLAB svm圖中獲得決策邊界的方程?

我的代碼R

data=xlsread('btpdata.xlsx',1.) 
    A = data(1:end,2:3) 
    B = data(1:end,1) 
    svmStruct = svmtrain(A,B,'showplot',true) 
    hold on 
    C = data(1:end,2:3) 
    D = data(1:end,4) 
    svmStruct = svmtrain(C,D,'showplot',true) 
    hold off 

我怎樣才能得到這個黑線在給定墊實驗室情節近似方程組的?

+0

這個數字是如何產生的?請分享關於這個情節的代碼。向我們展示該代碼是一個好的開始,它可能距離未投票結束還有一步之遙。 – rayryeng

+2

aproximatedly'y = 0.6' –

回答

1

這取決於你做了什麼套餐使用,但因爲它是一個線性的支持向量機有更多或更少的兩個選項:

  • 你訓練的SVM包含了線的屬性coefs方程式(有時所謂wweights)和b(或intercept),因此您的線路是<coefs, X> + b = 0
  • 你SVM containes alphas(雙係數,拉格朗日乘子),然後coefs = SUM_i alphas_i * y_i * SV_i其中SV_i是第i個支持向量(那些在您巴解組織圈t)和y_i是它的標籤(-1或+1)。有時alphas已經乘以y_i,那麼你的coefs = SUM_i alphas_i * SV_i

如果你試圖從主線劇情(圖)方程,那麼你只能讀它(和它或多或少y = 0.6,這意味着coefs = [0 1]b = -0.6。圖像分析爲基礎的方法(任意這樣的曲線)將需要:

  • 檢測圖像部分(對象檢測)
  • 讀取蜱/尺度(OCR +對象檢測)< - 這將是實際上是最難的部分
  • 濾除以往非黑色並對左邊的點執行線性迴歸,然後通過前面檢測到的比例進行變形。
+0

你能告訴我命令從這個訓練有素的svm中取出coefs嗎? – udAyKumArVermA

+0

一切都放在從yout訓練方法返回的SVMStruct,http://www.mathworks.com/help/stats/svmtrain.html – lejlot

+0

沒有名爲coefs列出的屬性那裏我也嘗試過「svmStruct.coefs」和「 svmStruct.Coefs「都不起作用 – udAyKumArVermA

1

我有同樣的問題。要建立決策邊界的線性方程(y = mx + b),您需要梯度(m)和y軸截距(b)。 SVMStruct.Bias是b項。梯度由SVM二級權重,確定其SVMStruct不包含,所以你需要從阿爾法(其中包括在SVMStruct)計算它們:

alphas = SVMStruct.Alpha; 
SV = SVMStruct.SupportVectors; 
betas = sum(alphas.*SV); 
m = betas(1)/betas(2) 

順便說一句,如果你的SVM邁上數據,那麼我認爲你需要對它進行縮放。