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'
title('多層感知機核函式');
CorrectRate4=sum(groups==classes4)/6
執行結果: