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

2021-06-28 05:43:27 字數 1309 閱讀 8326

採用核函式方法對下列資料進行非線性分類。給出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

執行結果:

小菜君的SVM筆記之核方法與核函式

前面對非線性支援向量機進行了簡單的介紹。例如moons資料集,為其增加乙個維度,即可很容易地構造乙個平面對兩類樣本進行分割。然而,若對映至3維空間無法較好分割則需要對映到更高維空間,尤其是當原始資料維度較高時,可能需要將其對映到無窮維空間,這根本無法計算。首先,給出核函式的定義。定義 設x math...

WPF呼叫Matlab函式方法

有的時候用c 寫影象處理方法,比較費事,不如matlab簡單,但是matlab又做不出wpf那樣的好看介面,怎麼辦呢。今天正好我要實現這個功能,就順便寫個小例子,給需要的人做個借鑑。想要用wpf呼叫matlab 就用到了matlab生成.dll檔案的功能。注 我的vs版本是2013,matlab版本...

呼叫不同路徑下函式的方法(matlab)

由於最近做了一些科研任務,用到了matlab,當需要呼叫函式時,為了方便就直接將函式檔案和呼叫指令碼放到同一路徑下,這樣做肯定是沒有問題的。但是如果目錄採用類似於c 多目錄組織,如下圖 這時候呼叫相應目錄下的函式或者檔案最好的方法是類似於c 那樣把目錄路徑 包含進來 其實很簡單,只用呼叫一條命令,假...