python 遗传算法 特征选择 开源_遗传算法之特征选择的python实现

本文介绍了使用遗传算法进行特征选择的基本原理,包括编码、初始种群生成、适应度函数、遗传操作等步骤。通过Python实现,利用sklearn-genetic库,并结合scikit-learn的评价指标如负均方误差,优化神经网络模型的超参数。实验中,遗传算法成功减少了特征数量并提高了模型的决定系数。
摘要由CSDN通过智能技术生成

目录

1 遗传算法特征选取基本原理

遗传算法特征选择的基本原理是用遗传算法寻找一个最优的二进制编码, 码中的每一位对应一个特征, 若第i位为“1”, 则表明对应特征被选取, 该特征将出现在估计器中, 为“0”, 则表明对应特征未被选取,该特征将不出现在分类器中。其基本步骤为:

(1) 编码。采用二进制编码方法, 二进制码的每一位的值, “0”表示特征未被选中;“1”表示特征被选中。

(2) 初始群体的生成。随机产生N个初始串构成初始种群, 通常种群数确定为50~100。

(3) 适应度函数。适应度函数表明个体或解的优劣性。针对特征选取问题, 适应度函数的构造非常重要, 它主要依据类别的可分性判据以及特征的分类能力。

(4) 将适应度最大的个体, 即种群中最好的个体无条件地复制到下一代新种群中, 然后对父代种群进行选择、交叉和变异等遗传算子运算, 从而繁殖出下一代新种群其它n-1个基因串。通常采用转轮法作为选取方法, 适应度大的基因串选择的机会大, 从而被遗传到下一代的机会大, 相反, 适应度小的基因串选择的机会小, 从而被淘汰的机率大。交叉和变异是产生新个体的遗传算子, 交叉率太大, 将使高适应度的基因串结构很快被破坏掉, 太小则使搜索停止不前, 一般取为0.5~0.9。变异率太大, 将使遗传算法变为随机搜索, 太小则不会产生新个体, 一般取为0.01~0.1。

(5) 如果达到设定的繁衍代数, 返回最好的基因串, 并将其作为特征选取的依据, 算法结束。否则, 回到 (4) 继续下一代的繁衍。

2. 适应度函数选择和环境要求

(1)适应度函数选择

可以参考scikitlearn库的model evaluation的分类指标和回归指标,本手稿选取mean_squared_error指标

以下有很多指标可以选择

SCORERS = dict(explained_variance=explained_variance_scorer,

r2=r2_scorer,

max_error=max_error_scorer,

neg_median_absolute_error=neg_median_absolute_error_scorer,

neg_mean_absolute_error=neg_mean_absolute_error_scorer,

neg_mean_squared_error=neg_mean_squared_error_scorer,

neg_mean_squared_log_error=neg_mean_squared_log_error_scorer,

accuracy=accuracy_scorer, roc_auc=roc_auc_scorer,

balanced_accuracy=b

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值