支援向量機多分類可以採用兩種方式,1.一對一 one vs one 2.一對多 one vs rest
1.one vs rest
clc;
clear all;
[iris_label,iris_data] = libsvmread('iris.scale');%讀取資料到matlab格式
% [~,~,labels] = unique(species); %# labels: 1/2/3
% data = zscore(meas); %# scale features
numinst = size(iris_data,1);%個數 150
numlabels = max(iris_label);%個數3
%# split training/testing
idx = randperm(numinst); %隨機選擇數字,打亂次序
numtrain = 100;%訓練個數100
numtest = numinst - numtrain;%測試個數50
traindata = iris_data(idx(1:numtrain),:); %從打亂後的數字選擇前100個
testdata = iris_data(idx(numtrain+1:end),:);
trainlabel = iris_label(idx(1:numtrain));
testlabel = iris_label(idx(numtrain+1:end));
%# train one-against-all models %訓練一對多的模型
model = cell(numlabels,1); %模型的個數3個
for k=1:numlabels
model = svmtrain(double(trainlabel==k), traindata, '-c 1 -g 0.2 -b 1');
end%# get probability estimates of test instances using each model
prob = zeros(numtest,numlabels);
for k=1:numlabels
[~,~,p] = svmpredict(double(testlabel==k), testdata, model, '-b 1');
prob(:,k) = p(:,model.label==1); %# probability of class==k
end%# predict the class with the highest probability
[~,pred] = max(prob,,2);
acc =sum(pred == testlabel) ./ numel(testlabel) %# accuracy
c = confusionmat(testlabel, pred) %# confusion matrix
2.one vs one
clc;
clear all;
[iris_label,iris_data] = libsvmread('iris.scale');%讀取資料到matlab格式
% [~,~,labels] = unique(species); %# labels: 1/2/3
% data = zscore(meas); %# scale features
numinst = size(iris_data,1);
numlabels = max(iris_label);
%# split training/testing
idx = randperm(numinst);
numtrain = 100;
numtest = numinst - numtrain;
traindata = iris_data(idx(1:numtrain),:);
testdata = iris_data(idx(numtrain+1:end),:);
trainlabel = iris_label(idx(1:numtrain));
testlabel = iris_label(idx(numtrain+1:end));
model= svmtrain(trainlabel, traindata, '-c 1 -g 0.2 -b 1');
[predict_label, accuracy, prob] = svmpredict(testlabel,testdata, model,'-b 1');
% fprintf('準確率為%d.....\n',accuracy);
參考:
支援向量機多分類libSVM
支援向量機多分類可以採用兩種方式,1.一對一 one vs one 2.一對多 one vs rest 1.one vs rest clc clear all iris label,iris data libsvmread iris.scale 讀取資料到matlab格式 labels unique...
分類 SVM 支援向量機
svm,support vector machine,可用於模式分類和非線性回歸。支援向量機的主要思想是建立乙個分類超平面作為決策曲面,使得正例和反例之間的隔離邊緣被最大化。支援向量機的理論基礎是統計學習理論,更精確的說,支援向量機是結構風險最小化的近似實現。這個原理基於這樣的事實 學習機器在測試資...
支援向量機分類器
1 支援向量機分類器 根據訓練樣本的分布,搜尋所有可能的線性分類器中最佳的那個。本文是利用支援向量機進行手寫體數字影象的分類任務。2 實驗 及結果截圖 coding utf 8 支援向量機分類器 手寫體資料讀取 從slearn.datasets裡匯入手寫數字載入器 from sklearn.data...