我的数据
y n Rh 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.333333333 2
1 11 1 1
-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 18 2 2
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
我的代码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
如何在给定的mat-lab图中得到这条黑线的近似方程?
答案 0 :(得分:1)
这取决于您使用的是哪个包,但由于它是线性支持向量机,因此或多或少有两个选项:
coefs
(有时称为w
或weights
)和b
(或intercept
)中的直线等式,所以你的行是<coefs, X> + b = 0
alphas
(双系数,拉格朗日乘数),然后是coefs = SUM_i alphas_i * y_i * SV_i
,其中SV_i
是我的支持向量(你的情节中的圆圈)和{{1是它的标签(-1或+1)。有时y_i
已经乘以alphas
,然后乘以y_i
。如果您尝试从实际绘图(图像)中获取等式,那么您只能读取它(它或多或少coefs = SUM_i alphas_i * SV_i
,这意味着y = 0.6
和{{1}基于图像分析的方法(对于任意这样的图)将需要:
答案 1 :(得分:1)
我遇到了同样的问题。要建立决策边界的线性方程(y = mx + b),您需要梯度(m)和y轴截距(b)。 SVMStruct.Bias是b-term。渐变由SVM beta权重决定,SVMStruct不包含,因此您需要从alphas(包含在SVMStruct中)计算它们:
alphas = SVMStruct.Alpha;
SV = SVMStruct.SupportVectors;
betas = sum(alphas.*SV);
m = betas(1)/betas(2)
顺便说一下,如果您的SVM已经缩放了数据,那么我认为您需要对其进行缩放。