matlab 多维svm分类代码,SVM多分类(matlab)
1.數據集:采用 matlab2016b 自帶數據集:iris鳶尾花、ionosphere電離層數據
2.采用函數 fitcecoc 進行SVM二分類/多分類模型訓練;
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
%訓練該模型
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: 351KFold: 10Partition: [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
總結
以上是生活随笔為你收集整理的matlab 多维svm分类代码,SVM多分类(matlab)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 颈椎前路caspar撑开器_“骨质增生”
- 下一篇: 硬盘分区与故障排解速查手册(1)