我有一个具有10个属性的数据集,那么我想减少数据集中的属性,我想应用遗传算法,但我有一点点对这个概念感到困惑,所以你可以给我任何例子。如何应用遗传算法来减少数据集中的属性
回答
如果您的目标是只选择最相关的属性,那么您绝对可以依赖遗传算法,其中您的遗传表示(也称为“遗传密码”或“染色体”)是一个二进制字符串。这意味着某个属性可以存在(选择)或不存在(未选中)。
你的遗传密码确实将是长度为10的二进制字符串,你可以通过运行下面的循环选择属性的最佳设置:
- 导入原始数据集
- 从数据集选择重要的特征(根据在步骤#2(*)
- 列车选择的特征,在步骤#1由遗传密码给出)
- 收缩数据集(进口)和预测的分类
- 评估适应度函数(例如错误率)
- 转到第2步,直到收敛(即几代人的最大数目已创建)
所以GA做什么,在更实际的方面,就是要创造N
第一人口个人。对于每个人来说,由于这是第一批人群,遗传密码在Matlab中默认是纯随机的(或者你可以编写一个解释如何选择初始群体的函数),并且对于每个人来说,步骤#3,#4和# 5被评估。一旦每个个体与某个适应值相匹配,GA就会通过遗传算子(主要是交叉,精英主义和选择)创建下一代(即下一代个体的遗传密码)。对于下一代个体,这样的遗传密码从上一代的“最佳”(即,如果你的问题是最小化问题的最低适应值)开始评估。您可能需要检查遗传操作者,以及他们如何工作以更好地了解这种“生殖”过程。
如果你在Matlab中使用ga()
函数,那么输入参数nvars
将等于10; IntCon
参数将具有值[1:10]
,因为您希望它们全部为0或1;并且输入参数option
(功能gaoptimset()
的输出将具有以下参数):上限是具有10个的向量,而下限是具有10个零的向量。 ga()
函数将您的问题视为最小化问题,所以我建议使用错误率作为适应函数(或其他旨在最小化的其他方法)。
要指定一个二进制群体,您可以依赖gaoptimset()
中的PopulationType
输入,但我从未使用它,所以我建议您阅读此功能的帮助(使用gaoptimset()
您可以指定群体中的个人数量以及GA在停止之前创建的代数......以及其他许多参数!)。 (*)注意:收缩数据集并不一定意味着您实际上通过遗传算法删除标记为0
的列(属性)。这可能会弄乱模式之间的不相似性/距离评估。在评估不相似性度量时,您可以使用遗传代码作为模式的权重:10-特征模式乘以10-位遗传密码和将乘以零的特征将不具有任何重要性(权重)在不相似的措施。
RapidMiner Studio在默认存储库中附带了一些遗传算法样本。
//样品/流程/ 04_Attributes/10_EvolutionaryFeatureSelection //样品/流程/ 04_Attributes/12_EvolutionaryWeighting //样品/流程/ 06_Meta/06_EvolutionaryParameterOptimization
的Optimize Selection (Evolutionary)
运营商可能是使用运营商。如果您查看该操作员的帮助,则可以从那里加载示例流程。该过程选择最佳属性以最大化分类模型的性能。
我相信你可以为你的问题使用二进制遗传算法特征选择。
也许该文件将帮助你在你的问题。他们甚至在代码中包含他们的论文以便进一步理解。
- 1. 多个域,如何使用相同的遗传算法属性
- 2. 如何减少使用遗传算法的噪声图像的错误?
- 3. 使用数据属性减少标记
- 4. 遗传属性下的最大集合
- 5. 如何使用属性来减少我的属性中的样板?
- 6. 遗传算法的数独
- 7. 遗传算法
- 8. 地图减少TB数据的算法?
- 9. 的遗传算法
- 10. 算法减少
- 11. 结合收集减少其属性
- 12. 遗传算法软件应用
- 13. 遗传算法 - 子集求和问题
- 14. 实现子集和与遗传算法
- 15. DEAP遗传算法
- 16. Python遗传算法
- 17. 遗传算法库
- 18. 减少算法时间的复杂性
- 19. TSPTW用遗传算法
- 20. 要使用遗传算法
- 21. 遗传算法如何被用来促进机器学习?
- 22. CrossFilter - 如何使用“关键”数据来减少方法?
- 23. 如何使用遗传算法求解线性方程组?
- 24. Python:遗传算法性能弱
- 25. 遗传算法和细胞遗传算法有什么区别
- 26. 如何在应用css分页符属性时减少间隙
- 27. 遗传算法的制作
- 28. Sessions Scheduling的遗传算法
- 29. SVM后的遗传算法
- 30. 高效的遗传算法