资源简介
利用matlab对SVM算法的参数进行优化,从而更好的提升分类性能
代码片段和文件信息
%% Matlab神经网络43个案例分析
% SVM的参数优化——如何更好的提升分类器的性能
% by 李洋(faruto)
% http://www.matlabsky.com
% Email:faruto@163.com
% http://weibo.com/faruto
% http://blog.sina.com.cn/faruto
% 2013.01.01
%% 清空环境变量
function chapter_GA
close all;
clear;
clc;
format compact;
%% 数据提取
% 载入测试数据wine其中包含的数据为classnumber = 3wine:178*13的矩阵wine_labes:178*1的列向量
load wine.mat;
% 画出测试数据的box可视化图
figure;
boxplot(wine‘orientation‘‘horizontal‘‘labels‘categories);
title(‘wine数据的box可视化图‘‘FontSize‘12);
xlabel(‘属性值‘‘FontSize‘12);
grid on;
% 画出测试数据的分维可视化图
figure
subplot(351);
hold on
for run = 1:178
plot(runwine_labels(run)‘*‘);
end
xlabel(‘样本‘‘FontSize‘10);
ylabel(‘类别标签‘‘FontSize‘10);
title(‘class‘‘FontSize‘10);
for run = 2:14
subplot(35run);
hold on;
str = [‘attrib ‘num2str(run-1)];
for i = 1:178
plot(iwine(irun-1)‘*‘);
end
xlabel(‘样本‘‘FontSize‘10);
ylabel(‘属性值‘‘FontSize‘10);
title(str‘FontSize‘10);
end
% 选定训练集和测试集
% 将第一类的1-30第二类的60-95第三类的131-153做为训练集
train_wine = [wine(1:30:);wine(60:95:);wine(131:153:)];
% 相应的训练集的标签也要分离出来
train_wine_labels = [wine_labels(1:30);wine_labels(60:95);wine_labels(131:153)];
% 将第一类的31-59第二类的96-130第三类的154-178做为测试集
test_wine = [wine(31:59:);wine(96:130:);wine(154:178:)];
% 相应的测试集的标签也要分离出来
test_wine_labels = [wine_labels(31:59);wine_labels(96:130);wine_labels(154:178)];
%% 数据预处理
% 数据预处理将训练集和测试集归一化到[01]区间
[mtrainntrain] = size(train_wine);
[mtestntest] = size(test_wine);
dataset = [train_wine;test_wine];
% mapminmax为MATLAB自带的归一化函数
[dataset_scaleps] = mapminmax(dataset‘01);
dataset_scale = dataset_scale‘;
train_wine = dataset_scale(1:mtrain:);
test_wine = dataset_scale( (mtrain+1):(mtrain+mtest): );
%% 选择GA最佳的SVM参数c&g
% GA的参数选项初始化
ga_option.maxgen = 200;
ga_option.sizepop = 20;
ga_option.cbound = [0100];
ga_option.gbound = [0100];
ga_option.v = 5;
ga_option.ggap = 0.9;
[bestaccbestcbestg] = gaSVMcgForClass(train_wine_labelstrain_winega_option);
% 打印选择结果
disp(‘打印选择结果‘);
str = sprintf( ‘Best Cross Validation Accuracy = %g%% Best c = %g Best g = %g‘bestaccbestcbestg);
disp(str);
%% 利用最佳的参数进行SVM网络训练
cmd = [‘-c ‘num2str(bestc)‘ -g ‘num2str(bestg)];
model = svmtrain(train_wine_labelstrain_winecmd);
%% SVM网络预测
[predict_labelaccuracy] = svmpredict(test_wine_labelstest_winemodel);
% 打印测试集分类准确率
total = length(test_wine_labels);
right = sum(predict_label == test_wine_labels);
disp(‘打印测试集分类准确率‘);
str = sprintf( ‘Accuracy = %g%% (%d/%d)‘accuracy(1)righttotal);
disp(str);
%% 结果分析
% 测试集的实际分类和预测分类图
figure;
hold on;
plot(test_wine_labels‘o‘);
plot(predict_label‘r*‘);
xlabel(‘测试集样本‘‘FontSize‘12);
ylabel(‘类别标签‘‘FontSize‘12);
legend(‘实际测试集分类‘‘预测测试集分类‘);
title(‘测试集的实际分类和预测分类图‘‘FontSize‘12);
grid on;
snapnow;
%% 子函数 gaSVMcgForClass.m
function [BestCVaccuracyBestcBestgga_option] = gaSVMcgForClass(train_labeltrain_dataga_option)
% gaSVMcgForClass
%
% by faruto
%Email:patrick.lee@foxmail.com QQ:516667408 http://blog.sina.com.cn/faruto BNU
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6042 2013-08-18 10:56 chapter_GridSearch.m
文件 8453 2013-08-18 10:57 chapter_PSO.m
文件 20168 2010-01-30 18:38 wine.mat
文件 25844 2013-08-18 10:57 html\chapter_GA.html
文件 3346 2013-08-18 10:57 html\chapter_GA.png
文件 6819 2013-08-18 10:56 html\chapter_GA_01.png
文件 10865 2013-08-18 10:56 html\chapter_GA_02.png
文件 12979 2013-08-18 10:57 html\chapter_GA_03.png
文件 9064 2013-08-18 10:57 html\chapter_GA_04.png
文件 25305 2013-08-18 10:56 html\chapter_GridSearch.html
文件 3346 2013-08-18 10:56 html\chapter_GridSearch.png
文件 6819 2013-08-18 10:56 html\chapter_GridSearch_01.png
文件 10865 2013-08-18 10:56 html\chapter_GridSearch_02.png
文件 12638 2013-08-18 10:56 html\chapter_GridSearch_03.png
文件 16328 2013-08-18 10:56 html\chapter_GridSearch_04.png
文件 21970 2013-08-18 10:56 html\chapter_GridSearch_05.png
文件 15673 2013-08-18 10:56 html\chapter_GridSearch_06.png
文件 9098 2013-08-18 10:56 html\chapter_GridSearch_07.png
文件 32779 2013-08-18 10:58 html\chapter_PSO.html
文件 3330 2013-08-18 10:58 html\chapter_PSO.png
文件 6819 2013-08-18 10:57 html\chapter_PSO_01.png
文件 10865 2013-08-18 10:57 html\chapter_PSO_02.png
文件 13951 2013-08-18 10:58 html\chapter_PSO_03.png
文件 9095 2013-08-18 10:58 html\chapter_PSO_04.png
文件 6450 2013-08-18 10:56 chapter_GA.m
目录 0 2017-12-15 10:33 html
----------- --------- ---------- ----- ----
308911 26
- 上一篇:时频分析-s变换
- 下一篇:小波变换用于图像压缩的MATLAB源程序
相关资源
- Pattern Recognition and Machine Learning(高清
- MATLAB 编程 第二版 Stephen J. Chapman 著
- 均值滤波和FFT频谱分析Matlab代码
- 《MATLAB扩展编程》代码
- HDB3码、AMI码的MATLAB实现
- 3点GPS定位MATLAB仿真
- MATLAB数字信号处理85个实用案例精讲入
- matlab从入门到精通pdf94795
- 欧拉放大论文及matlab代码
- 跳一跳辅助_matlab版本
- 全面详解LTE MATLAB建模、仿真与实现
- MIMO-OFDM无线通信技术及MATLAB实现_孙锴
- MATLAB Programming for Engineers 4th - Chapman
- matlab 各种谱分析对比
- 分数阶chen混沌matlab程序
- 基于粒子群算法的非合作博弈的matl
- MATLAB车流仿真 包括跟驰、延误
- matlab空间桁架计算程序
- 基于MATLAB的图像特征点匹配和筛选
- DMA-TVP-FAVAR
- GPS信号的码捕获matlab代码.7z
- 一维光子晶体MATLAB仿真代码吸收率折
- newmark法源程序
- 传统关联成像、计算鬼成像matlab
- pri传统分选算法
- 摆动滚子推杆盘形凸轮设计
- 医学图像重建作业matlab源码
- Matlab实现混沌系统的控制
- 检测疲劳驾驶
- Matlab锁相环仿真-Phase Locked Loop.rar
评论
共有 条评论