********************************************************网络
***数据集下载地址 :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代码