我有一个包含10个属性的数据集,然后我想减少数据集中的属性,因为我想应用遗传算法,但我对这个概念有点困惑所以你能给我任何一个例子。
答案 0 :(得分:0)
如果您的目标是仅选择最相关的属性,那么您肯定可以依赖遗传算法,其中您的遗传表示(也称为“遗传密码”或“染色体”)是二进制字符串。这意味着某个属性可以存在(选中)或不存在(未选中)。
您的遗传密码确实是长度为10的二进制字符串,您可以通过运行以下循环来选择最佳属性集:
因此,从更实际的角度来看,GA所做的是创建第一批N
个体。对于每个人,由于这是第一个种群,遗传密码在Matlab中默认为纯随机(或者您可以编写一个解释如何选择初始种群的函数),并为每个个体执行步骤#3,#4和#评估了5个。一旦每个个体与某个适合度值匹配,GA就通过遗传算子(主要是交叉,精英和选择)创建下一代(即下一代个体的遗传密码)。对于下一代个体,这样的遗传密码从上一代中的“最佳”(即,如果您的问题是最小化问题的最低适应值)开始评估。您可能想要检查遗传算子以及它们如何工作以更好地理解这种“繁殖”过程。
如果您在Matlab中使用ga()
函数,则输入参数nvars
将等于10; IntCon
参数的值为[1:10]
,因为您希望所有参数都为0或1;输入参数option
,即函数gaoptimset()
的输出,将具有以下参数:上限是具有10个的向量,而下限是具有10个零的向量。 ga()
函数将您的问题视为最小化问题,因此我建议将错误率用作适应度函数(或其他旨在最小化的函数)。
要指定二进制填充,您也可以依赖PopulationType
中的gaoptimset()
输入,但我从未使用它,因此我建议您阅读此函数的帮助(使用gaoptimset()
即可同时指定人口中的个人数量以及GA在停止之前创建的世代数......以及许多其他参数!)。
(*)注意:缩小数据集并不一定意味着您实际删除了遗传算法标记为0
的列(属性)。这可能会破坏模式之间的差异/距离评估。在评估相异性度量时,您可以使用遗传密码作为模式的权重:10个特征模式元素乘以10位遗传密码,并且将乘以零的特征将没有任何重要性(权重)在相异性度量中。
答案 1 :(得分:0)
RapidMiner Studio在默认存储库中附带了一些遗传算法示例。
//样品/进程/ 04_Attributes / 10_EvolutionaryFeatureSelection //样品/进程/ 04_Attributes / 12_EvolutionaryWeighting //样品/进程/ 06_Meta / 06_EvolutionaryParameterOptimization
<?php
//Only display 3 posts in the loop
$args = array(
'posts_per_page' => '3',
);
frontpage_query = new WP_Query($args);
if ($frontpage_query->have_posts()) : while (have_posts()) : $frontpage_query->the_post();
?>
<?php get_template_part( 'parts/loop', 'frontpage-grid' ); ?>
<?php endwhile; endif; ?>
运算符可能是要使用的运算符。如果您查看此运算符的帮助,则可以从那里加载示例进程。此过程选择最佳属性以最大化分类模型的性能。
答案 2 :(得分:0)
我相信你可以使用二进制遗传算法特征选择来解决你的问题。
也许此文件可以帮助您解决问题。他们甚至将他们的论文包含在进一步理解的代码中。