基于遗传算法的特征选择方法

基本流程

初始化种群

初始化种群是算法中种群的基本设定。为了进行特征选择,算子编码选择二进制编码表示。以最大种群数pop_size生成随机种群,产生其数量的随机二进制染色体串。0代表不选择,1代表选择,选择维数相对随机。
特别地,规定随机生成的染色体串的组成不能全为0,即必须存在至少一个特征被选择的情况,因此需要做检查操作避免全0串的情况。

适应度函数

适应度函数是用于通过计算适应度对当前特征选择方式效果的评估。对于种群中的每个个体,进行适应度的计算。
在本文中,对于当前种群,选择决策树作为分类器,对数据集选择出的特征做5折交叉验证,计算得到的准确度评估值均值即为每个个体适应度值。并计算适应度总和。由适应度总和和个体适应度可知个体适应度占比。

累积概率

根据个体适应度计算出染色体累积概率。将pop_size条染色体个体的适应度占比逐个累加起来,得到0到1上的pop_size个区间,每个区间的长度决定了对应染色体被选中的概率。

选择

使用在当前种群中,根据适应度比例法,通过生成随机数与累积概率范围进行选择,得到新的种群。

交叉

在当前种群中,在0到pop_size-1间遍历每个个体,依据交叉概率pc,若产生交叉,则随机生成该次交叉点位置,对当前个体和第i+1个个体进行两点交叉操作产生新的个体。

变异

在当前种群中,依据变异概率pm,若产生变异,则随机生成本次变异点位置,若当前位为0,则置1;若当前位为1,则置0.

最优解

通过遍历得出当前最优解的适应度值与染色体串。

主函数

在主函数中,依据遗传算法流程调用其他模块。对种群进行初始化,并依据迭代次数iterations的值开始每一代的操作。
经过选择、交叉、变异后产生下一代,在每一代完成后打印特征选择结果即二进制串,并绘制图像表示出迭代中最佳适应度的变化。

结果

sonar数据集(sonar.all-data)
sonar数据集的处理是基从不同角度的声纳的数值大小来判断目标物体是岩石还是矿井,是一个二分类问题。此数据集包含了208行数据,每行数据包含了60个数据和1个字符。60个变量代表了不同方向上特定频带的声呐强度,而目标属性表示为字符R或M,其中,R代表目标物体的种类是岩石,M则代表是矿井。
设定代数为100,种群规模为50,交叉概率为0.25,变异概率为0.01。

在这里插入图片描述

如图,在sonar数据集上,100代中平均适应度值不断升高,选择的效果随代数逐渐变优。
平均适应度的最小值为0.6174366744996352,出现在第1次迭代。平均适应度的最大值为0.6749703157496691,出现在第43次迭代,选出的最优染色体型为[0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0]。
最终选出的最优染色体型为[0, 0, 1, 1, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 1, 0, 0],适应度为0.716875996002485。

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值