zoukankan      html  css  js  c++  java
  • SVM实例及Matlab代码

    ********************************************************

    ***数据集下载地址 :http://pan.baidu.com/s/1geb8CQf****

    *********************************************************

     zhangtao1698@126.com

    一次模式识别课中的关于SVM用法的一个简单的实例(训练集和测试集简单的划分):

    一、实验目的

    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 =[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代码

  • 相关阅读:
    codeforces707B:Bakery
    codeforces707A:Brain's Photos
    BZOJ1084 [SCOI2005]最大子矩阵
    BZOJ1264 [AHOI2006]基因匹配Match
    BZOJ2764 [JLOI2011]基因补全
    codevs1257 打砖块
    BZOJ1079 [SCOI2008]着色方案
    BZOJ1026 [SCOI2009]windy数
    菜鸟学自动化测试(一)----selenium IDE
    关于w3school的html5部分output 元素实例代码(点亲自试一试进去)的问题纠正
  • 原文地址:https://www.cnblogs.com/lvchaoshun/p/5906890.html
Copyright © 2011-2022 走看看