matlab 自帶svmtrain函式返回值求邊界判別條件(不是libsvm)
阿新 • • 發佈:2019-02-02
matlab自帶了一個svmtrain函式,這個函式的返回值,和libsvm裡的函式是不一樣的。這裡主要寫一下如何求 w'x + b = 0 裡面的w和b。示例程式碼:
clc;
clear;
close all;
traindata = [0 2; 3 1; 2 1; 2 2];
group = [1 -1 1 -1]';
svm_struct = svmtrain(traindata,group,'Showplot',true); % training
Group = svmclassify(svm_struct,traindata,'Showplot',true);
得到svm_struct。裡面的SupportVectors是支援向量,Alpha是拉格朗日系數,Bias其實就是b經過scale之後的值。w_scale = SupportVectors‘ * Alpha是經過scale之後,w的值。然後,我們需要ScaleData引數裡面的值,b = Bias + sum(svm_struct.ScaleData.shift), w = w_scale .* svm_struct.ScaleData.scaleFactor.