不服输的倔强 发表于 2019-7-2 15:25:16

SVM实例及Matlab代码

本帖最后由 不服输的倔强 于 2019-7-2 15:26 编辑


数据集:
一、实验目的1.掌握支持向量机(SVM)的原理、核函数类型选择以及核参数选择原则等;2.熟悉基于libSVM二分类的一般流程与方法;二、实验内容    1.对“bedroom, forest”两组数据进行分类(二分类);    2.得到试验分类准确率;三、实验条件1.LibSVM软件包,3.17版本;2. Matlab 2013a。四、实验方法与流程(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 =;% 相应的训练集的标签也要分离出来train_set_labels =;% 将第一类的6-10,第二类的16-20,做为测试集test_set =;% 相应的测试集的标签也要分离出来test_set_labels =;
% 数据预处理,将训练集和测试集归一化到区间
= size(train_set); = size(test_set);
test_dataset = ;% mapminmax为MATLAB自带的归一化函数 =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网络预测 =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;
http://img.blog.csdn.net/20160120152532465?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center程序运行结果:optimization finished, #iter = 5nu = 0.643949obj = -4.304693, rho = -0.008725nSV = 8, nBSV = 6Total nSV = 8Accuracy = 100% (10/10) (classification) 关于支持向量机(SVM)的一个简单应用实例及matlab代码
页: [1]
查看完整版本: SVM实例及Matlab代码