SVM實例及Matlab代碼

********************************************************網絡

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

*********************************************************測試

 zhangtao1698@126.comrest

一次模式識別課中的關於SVM用法的一個簡單的實例(訓練集和測試集簡單的劃分):圖片

1、實驗目的it

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

2.熟悉基於libSVM二分類的通常流程與方法;class

2、實驗內容test

    1.對「bedroom, forest」兩組數據進行分類(二分類);原理

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

3、實驗條件

1.LibSVM軟件包,3.17版本;

2. Matlab 2013a。

4、實驗方法與流程

(1) 試驗流程:

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

Step2: 爲訓練集與測試集選定標籤集;

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

Step4: 根據model,對測試集進行測試集獲得accuracyrate;

(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代碼

%% SVM數據分類預測---做業數據

%

%

%*****write by Taozhang 2014.04.16

%%

clear all;

clc;

%%

% 做業中提供的數據已作整理,不在單獨導入;

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;




 

程序運行結果:

optimization finished, #iter = 5

nu = 0.643949

obj = -4.304693, rho = -0.008725

nSV = 8, nBSV = 6

Total nSV = 8

Accuracy = 100% (10/10) (classification)

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

相關文章
相關標籤/搜索