1. 程式人生 > >Matlab下核函式方法進行非線性分類

Matlab下核函式方法進行非線性分類

採用核函式方法對下列資料進行非線性分類。給出matlab具體程式碼,及採用訓練樣本進行測試得到的準確率結果。
x=[0 1 0 1 2 -1];y=[0 0 1 1 2 -1];z=[-1 1 1 -1 1 1];其中,(x,y)代表二維的資料點,z 表示相應點的型別屬性。

執行程式碼:

data=[1,0;0,1;2,2;-1,-1;0,0;1,1]; 

groups=[1;1;1;1;-1;-1];

figure;

subplot(2,2,1);

Struct1 = svmtrain(data,groups,'Kernel_Function','quadratic''showplot',true);

classes1=svmclassify(Struct1,data,'showplot',true);

title('二次核函式');

CorrectRate1=sum(groups==classes1)/6

subplot(2,2,2);

Struct2 = svmtrain(data,groups,'Kernel_Function','rbf''RBF_Sigma',0.41,'showplot',true);

classes2=svmclassify(Struct2,data,'showplot',true);

title('高斯徑向基核函式(核寬0.41)');

CorrectRate2=sum(groups==classes2)/6

subplot(2,2,3);

Struct3 = svmtrain(data,groups,'Kernel_Function','polynomial''showplot',true);

classes3=svmclassify(Struct3,data,'showplot',true);

title('多項式核函式');

CorrectRate3=sum(groups==classes3)/6

subplot(2,2,4);

Struct4 = svmtrain(data,groups,'Kernel_Function','mlp''showplot',true);

classes4=svmclassify(Struct4,data,'showplot'

,true);

title('多層感知機核函式');

CorrectRate4=sum(groups==classes4)/6

執行結果: