matlabSVM多分類:fitcecoc函數


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; %三種屬性{'setosa','versicolor','virginica'};species(種類) t = templateSVM('Standardize',1); %創建SVM模板t;
%templateSVM是fitcecoc函數中的SVM模板;
%standardize:數據標准化,可用help查看templateSVM其他參數 %訓練該模型 Mdl = fitcecoc(X,Y,'Learners',t,'ClassNames',{'setosa','versicolor','virginica'}); %驗證該模型 CVMdl = crossval(Mdl); %將模型進行交叉驗證,平衡模型欠擬合和過擬合 %顯示結果 oosLoss = kfoldLoss(CVMdl) %10折交叉驗證得到的泛化誤差 oosloss =0.033,效果很好

 結果如下:

>> [CVMdl,oosLoss]=SVM3()
CVMdl =
  classreg.learning.partition.ClassificationPartitionedECOC
    CrossValidatedModel: 'ECOC'
         PredictorNames: {'x1'  'x2'  'x3'  'x4'}
           ResponseName: 'Y'
        NumObservations: 150
                  KFold: 10
              Partition: [1x1 cvpartition]
             ClassNames: {'setosa'  'versicolor'  'virginica'}
         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: {1x34 cell} ResponseName: 'Y' NumObservations: 351 KFold: 10 Partition: [1x1 cvpartition] ClassNames: {'b' 'g'} ScoreTransform: 'none' Properties, Methods oosLoss_2 = 0.113960113960115

 

參考資料:

1.官方文檔:https://www.mathworks.com/help/stats/fitcecoc.html

2.代碼參考:fitcecoc的其他數據集嘗試: https://blog.csdn.net/kekeicon/article/details/72812097,作者:kekeicon

3.matlab自帶數據集一覽:https://ww2.mathworks.cn/help/stats/sample-data-sets.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM