matlabSVM多分類 fitcecoc函式

2022-04-15 13:26:46 字數 1982 閱讀 3481

1.資料集:採用 matlab2016b 自帶資料集:iris鳶尾花、ionosphere電離層資料

2.採用函式 fitcecoc 進行svm多分類模型訓練;【fitcecoc:ecoc:error-correcting output code】

3.採用10折交叉驗證對資料集進行劃分,將mdl轉化為 cvmdl

4.將誤差ossloss作為模型的評價指標

示例1:鳶尾花資料集iris

function [cvmdl,oosloss]=svm3()    %分成三類

load fisheriris

x = meas; %150*4 :150個樣本,4個特徵(萼長、萼寬、瓣長、瓣寬);meas=measure(長度)

y = species; %三種屬性;species(種類)

t = templatesvm('standardize',1); %建立svm模板t;

%templatesvm是fitcecoc函式中的svm模板;

%standardize:資料標準化,可用help檢視templatesvm其他引數

%訓練該模型

mdl = fitcecoc(x,y,'learners',t,'classnames',);

%驗證該模型

cvmdl = crossval(mdl); %將模型進行交叉驗證,平衡模型欠擬合和過擬合

%顯示結果

oosloss = kfoldloss(cvmdl) %10折交叉驗證得到的泛化誤差 oosloss =0.033,效果很好

結果如下:

>> [cvmdl,oosloss]=svm3()

cvmdl =

classreg.learning.partition.classificationpartitionedecoc

crossvalidatedmodel: 'ecoc'

predictornames:

responsename: 'y'

numobservations: 150

kfold: 10

partition: [1x1 cvpartition]

classnames:

scoretransform: 'none'

properties, methods

oosloss =

0.0333333333333333

示例2:電離層資料二分類

%matlab自帶電離層

load ionosphere;

%使用預設選項訓練ecoc多類模型

model_2 =fitcecoc(x,y);

%建立乙個svm模板

t_2 = templatesvm('standardize',1);

%接下來訓練ecoc分類器

model_2 = fitcecoc(x,y,'learners',t_2);

%使用10倍交叉驗證交叉驗證mdl

cvmodel_2 =crossval(model_2);

%估算泛化誤差

oosloss_2 = kfoldloss(cvmodel_2);

結果:

>> [cvmodel_2,oosloss_2]=svm31()

cvmodel_2 =classreg.learning.partition.classificationpartitionedecoc

crossvalidatedmodel: 'ecoc'predictornames:

responsename: 'y'numobservations: 351kfold: 10partition: [1x1 cvpartition]

classnames:

scoretransform: 'none'properties, methods

oosloss_2 =

0.113960113960115

多分類查詢

有這樣乙個情況 現在有50個分類,每個型別我們只需要15條記錄!該怎麼做?而每個型別的記錄數大概都在數萬條!我遇到此種問題,本能的把它當做一般的問題來處理 你不是要50個分類,每種分類要15條嗎?好 第一種方式 通過子查詢方式實現,語句如下 slect n.from news object n wh...

libsvm 多分類情況

svm是乙個二分類器,當遇到多類別的時候,一般採取如下兩種策略。a.一對多法 one versus rest,簡稱1 v r svms 訓練時依次把某個類別的樣本歸為一類,其他剩餘的樣本歸為另一類,這樣k個類別的樣本就構造出了k個svm。分類時將未知樣本分類為具有最大分類函式值的那類。b.一對一法 ...

多分類學習

多分類學習的基本思路是拆解法,即將多個二分類任務拆為若干個二分類任務求解。具體地就是,先對問題進行拆分,然後為每個拆分的二分類任務訓練乙個分類器 在測試時,對這些分類器的 結果進行整合以獲得最終的多分類結果。關鍵 多分類任務如何拆分。經典的為 一對一 one vs one,ovo 一對多 one v...