1. 程式人生 > >支持向量機(SVM)的一個簡單應用實例及matlab代碼

支持向量機(SVM)的一個簡單應用實例及matlab代碼

.com 自帶 under 內容 AD 軟件 tex 分類器 ref

數據集下載地址 :http://pan.baidu.com/s/1geb8CQf

一、實驗目的

1.掌握支持向量機(SVM)的原理、核函數類型選擇以及核參數選擇原則等;

2.熟悉基於libSVM二分類的一般流程與方法;

二、實驗內容

1.對“bedroom, forest”兩組數據進行分類(二分類);

2.得到試驗分類準確率;

三、實驗條件

1.LibSVM軟件包,3.17版本;

2. Matlab 2013a。

四、實驗方法與流程

(1) 試驗流程:

Step1: 根據給定的數據,選定訓練集和測試集;

Step2: 為訓練集與測試集選定標簽集;

Step3: 利用訓練集進行訓練分類器得到model;

Step4: 根據model,對測試集進行測試集得到accuracy rate;

(2)實驗數據準備:

“bedroom.mat”10*15的矩陣,分別代表了不同的十張有關於bedroom的圖片的15維屬性;

“forest.mat”10*15矩陣,分別代表了不同的十張有關於forest的圖片的15維屬性特征;

訓練集:trainset(); 分別取bedroom(1:5,:)和forse(1:5,:)作為訓練集;

測試集:testset(); 分別取bedroom(6:10,:)和forse(6:10,:)作為測試集;

標簽集:label(); 取bedroom的數據為正類標簽為1;forse的數據為負類標簽為-1.

(3) Matlab程序與實驗結果:

附錄:matlab代碼

clear all;
clc;
%%
%% dataset是將bedroom和forest合並;dataset = [bedroom;forset];這行代碼可以實現合並
load dataset.mat                 %導入要分類的數據集
load labelset.mat                %導入分類集標簽集
 
% 選定訓練集和測試集
 
% 將第一類的1-5,第二類的11-15做為訓練集
train_set = [dataset(1:5,:);dataset(11:15,:)];
% 相應的訓練集的標簽也要分離出來
train_set_labels 
= [lableset(1:5);lableset(11:15)]; % 將第一類的6-10,第二類的16-20,做為測試集 test_set = [dataset(6:10,:);dataset(16:20,:)]; % 相應的測試集的標簽也要分離出來 test_set_labels = [lableset(6:10);lableset(16:20)]; % 數據預處理,將訓練集和測試集歸一化到[0,1]區間 [mtrain,ntrain] = size(train_set); [mtest,ntest] = size(test_set); test_dataset = [train_set;test_set]; % mapminmax為MATLAB自帶的歸一化函數 [dataset_scale,ps] = mapminmax(test_dataset,0,1); dataset_scale = dataset_scale; train_set = dataset_scale(1:mtrain,:); test_set = dataset_scale( (mtrain+1):(mtrain+mtest),: ); %% SVM網絡訓練 model = svmtrain(train_set_labels, train_set, -s 2 -c 1 -g 0.07); %% SVM網絡預測 [predict_label] = svmpredict(test_set_labels, test_set, model); %% 結果分析 % 測試集的實際分類和預測分類圖 % 通過圖可以看出只有一個測試樣本是被錯分的 figure; hold on; plot(test_set_labels,o); plot(predict_label,r*); xlabel(測試集樣本,FontSize,12); ylabel(類別標簽,FontSize,12); legend(實際測試集分類,預測測試集分類); title(測試集的實際分類和預測分類圖,FontSize,12); grid on;

轉載自https://blog.csdn.net/mushiheng/article/details/52491104

支持向量機(SVM)的一個簡單應用實例及matlab代碼