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

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

1、實驗目的函數

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

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

2、實驗內容.net

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

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

3、實驗條件blog

1.LibSVM軟件包,3.17版本;圖片

2. Matlab 2013a。get

4、實驗方法與流程

(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

相關文章
相關標籤/搜索