1. 程式人生 > >matlab 自帶svmtrain函式返回值求邊界判別條件(不是libsvm)

matlab 自帶svmtrain函式返回值求邊界判別條件(不是libsvm)

    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.