支持向量机(SVM)的一个简单应用实例及matlab代码

Posted Mr.H

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了支持向量机(SVM)的一个简单应用实例及matlab代码相关的知识,希望对你有一定的参考价值。

数据集下载地址 :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代码的主要内容,如果未能解决你的问题,请参考以下文章

机器学习基础:通俗理解支持向量机SVM及代码实践

支持向量机(SVM):应用实例

基于支持向量机SVM的脑部肿瘤识别,脑电波样本熵提取

支持向量机

0#07 SVM 支持向量机

独家 | 支持向量机背后的数学 -对于SVM背后的数学和理论解释的快速概览及如何实现