【LSSVM分类】基于matlab遗传算法优化LSSVM烟叶识别【含Matlab源码 1944期】
一、GA-SVM的图像分类简介
1 GA-SVM的图像分类思想
GA-SVM的图像分类基本思想为:首先分别提取图像的颜色和纹理特征,然后采用遗传算法得到最优分类权值向量解,并利用该最优权值对图像各个特征进行加权,最后用加权支持向量机建立图像分类器。具体如图1所示。
图1 图像分类算法的工作流程
2 图像特征的提取和权值确定
2.1 颜色特征
对于一幅图像,直方图和矩阵特征难以描述其类别关系,这主要由于它们没有考虑各个颜色分布的结构特性,因此本文选择用颜色聚合向量来表达图像的颜色特征。其表达式为:<(1,β1),(2,β2),…(N ,βN)> ,其中βi为非聚合像素的数目,i为第i个bin的聚合像素的数目。
2.2 Gabor纹理特征
Gabor滤波器函数可以表示为
各个滤波器的方差可以表示为
通过Gabor滤波,可以找到一个40维的Gabor纹理特征向量:( μ11,σ11,μ12,σ12,…,μ45,σ45) 。
2.3 特征归一化
由于特征数量纲量不一致,容易对分类效率产生不利影响,为了解决该难题,将提取的特征进行归一化处理。
2.4 遗传算法确定特征权值
传统图像分类算法认为各个特征对分类效果的贡献一样,但实践证明,对于不同类型的图像,起决定性因素的分类特征是不一样的。鉴于此,采用遗传算法对图像特征进行加权,考虑各个特征对图像分类效果的不同贡献,为贡献大的特征在分类中分配更大的权值,贡献小的特征分配较小的权值,然后结合多种特征共同对图像进行分类。
1)收集图像数据,并对图像预处理,消除图像中的噪声。
2)分别提取图像的纹理、颜色特征,并转化为相应的特征向量,同时对特征进行归一化处理。
3)随机初始化种群,每个个体对应一组特征权值。
4)根据特征值建立学习样本,输入到支持向量机中学习,计算每一组权值相对应的检索结果。
5)对个体进行选择、交叉和突异操作,产生新一代种群。
6)如果达到最大迭代次数,则结束权值寻优,否则跳转到步骤4)继续执行。
7)将最优个体进行解码,得到特征的最优权值。
具体流程如图3所示。
图3 遗传算法优化特征权值的流程
二、部分源代码
clc
clear all
close all
% 加载工具箱
addpath('LSSVM工具箱\')
%% 加载数据
data=csvread('最小二乘支持向量机.csv',1,0);
tr_len=36;
[W,D]=size(data);% 数据行和列
% %% 训练数据
X = data(1:tr_len,1:D-1);%输入属性特征数据
Y= data(1:tr_len,D);%标签,即类别
% %% 测试数据
Xt= data(tr_len+1:end,1:D-1);%输入属性特征数据
Yt =data(tr_len+1:end,D);%标签,即类别
%% 归一化
[Xn,inputps] = mapminmax(X');
Xtn= mapminmax('apply',Xt',inputps);
% 转置,符合LSSVM数据格式要求
X=Xn';
Xt=Xtn';
%% LSSVM参数设置
gam=5;
sig2=50;
% %% GA特征选择维数
S=size(data,2)-1; %数据的维度——特征数
bound=[0,1]; %边界条件
maxgen=10; %进化代数,即迭代次数
sizepop=10; %种群规模
pcross=0.7; %交叉概率选择,0和1之间
pmutation=0.05; %变异概率选择,0和1之间
lenchrom=ones(1,S);
individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %将种群信息定义为一个结构体
avgfitness=[]; %每一代种群的平均适应度
bestfitness=[]; %每一代种群的最佳适应度
bestchrom=[]; %适应度最好的染色体
%
% %初始化种群
initPop = randi([0 1],sizepop,S);
for i = 1:size(initPop,1)
individuals.chrom(i,:)=initPop(i,:);
individuals.fitness(i) =funlssvm(initPop(i,:),X,Y,gam,sig2);
end
%找最好的染色体
[bestfitness bestindex]=max(individuals.fitness);
bestchrom=individuals.chrom(bestindex,:); %最好的染色体
avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度
% 记录每一代进化中最好的适应度和平均适应度
trace=[avgfitness bestfitness];
%% 迭代求解
% 进化开始
for i=2:maxgen
disp(['迭代次数:',num2str(i)])
% 选择
best(i,:)=bestchrom;
individuals=select(individuals,sizepop);
avgfitness=sum(individuals.fitness)/sizepop;
%交叉
individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);
individuals.chrom;
% 变异
individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bound);
% 计算适应度
for j=1:sizepop
x=individuals.chrom(j,:); %解码
individuals.fitness(j)=funlssvm(x,X,Y,gam,sig2);
end
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
三、运行结果
四、Matlab版本及参考文献
1 matlab版本
2014a
2 参考文献
[1] 王东霞,周观民.遗传算法优化特征权值的支持向量机图像分类[J].电视技术. 2015,39(02)
3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/125696752
- 点赞
- 收藏
- 关注作者
评论(0)