生活随笔
收集整理的這篇文章主要介紹了
SVM分类的一个例子
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
SVM分類的過程:
1、選定訓練集和測試集------------------->數據的預處理---------------------------------》訓練SVM----------------------------------》預測測試集------------------------》分類的正確率
<span style="font-size:18px;">close all;
clear;
clc;
format compact;
%% 數據提取% 載入測試數據wine,其中包含的數據為classnumber = 3,wine:178*13的矩陣,wine_labes:178*1的列向量
load chapter12_wine.mat;
% 選定訓練集和測試集% 將第一類的1-30,第二類的60-95,第三類的131-153做為訓練集
train_wine = [wine(1:30,:);wine(60:95,:);wine(131:153,:)];
% 相應的訓練集的標簽也要分離出來
train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];
% 將第一類的31-59,第二類的96-130,第三類的154-178做為測試集
test_wine = [wine(31:59,:);wine(96:130,:);wine(154:178,:)];
% 相應的測試集的標簽也要分離出來
test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];%% 數據預處理
% 數據預處理,將訓練集和測試集歸一化到[0,1]區間[mtrain,ntrain] = size(train_wine);
[mtest,ntest] = size(test_wine);dataset = [train_wine;test_wine];
% mapminmax為MATLAB自帶的歸一化函數
[dataset_scale,ps] = mapminmax(dataset',0,1);
dataset_scale = dataset_scale';train_wine = dataset_scale(1:mtrain,:);
test_wine = dataset_scale( (mtrain+1):(mtrain+mtest),: );
%% SVM網絡訓練
model = svmtrain(train_wine_labels', train_wine, '-c 2 -g 1');%% SVM網絡預測
[predict_label, accuracy] = svmpredict(test_wine_labels, test_wine, model);%% 結果分析% 測試集的實際分類和預測分類圖
% 通過圖可以看出只有一個測試樣本是被錯分的
figure;
hold on;
plot(test_wine_labels,'o');
plot(predict_label,'r*');
xlabel('測試集樣本','FontSize',12);
ylabel('類別標簽','FontSize',12);
legend('實際測試集分類','預測測試集分類');
title('測試集的實際分類和預測分類圖','FontSize',12);
grid on;
</span>
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的SVM分类的一个例子的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。