【LSSVM分类】基于matlab遗传算法优化LSSVM烟叶识别【含Matlab源码 1944期】

举报
海神之光 发表于 2022/07/11 00:50:31 2022/07/11
【摘要】 一、GA-SVM的图像分类简介 1 GA-SVM的图像分类思想 GA-SVM的图像分类基本思想为:首先分别提取图像的颜色和纹理特征,然后采用遗传算法得到最优分类权值向量解,并利用该最优权值对图像各个特征...

一、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;                       %交叉概率选择,01之间
pmutation=0.05;                    %变异概率选择,01之间
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

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。