人工蜂群算法python_改进的人工蜂群算法解决聚类问题(在Python中的分步实现)...

本文介绍如何利用人工蜂群算法(ABC)的Python实现解决聚类问题。首先阐述了聚类问题的基本概念,然后展示了如何将ABC算法应用于聚类任务,无需对原有算法进行修改,只需将其转化为优化任务。通过定义质心和误差平方和目标函数,实现了对数据的分区。最后,使用Iris数据集验证了ABC算法在聚类问题上的效果。
摘要由CSDN通过智能技术生成

之前的文章

中,我介绍了如何通过实施名为Artificial Bee Colony(ABC)的群集智能(SI)算法来解决现实世界中的优化问题。

现在是时候让我们掌握一些真实的数据并解释我们如何使用我们的ABC算法的Python实现来执行群集任务。但在此之前,让我们深入了解一下聚类问题。

聚类问题

聚类问题是一个未明确定义的NP难题,其基本思想是在数据中发现隐藏的模式。关于什么是集群没有一个正式的定义,但它与分组元素的想法相关联,以便我们可以区分不同组中的元素。

有不同的算法族以不同的方式定义聚类问题。定义聚类问题的经典方法,在文献中经常见到,是将其减少为一个数学问题,即找到原始数据的k分区。

找到一个集合S的k分区,被定义为找到S的k个子集,它服从两个规则:

这些子集中的任何不同的交集都等于空集合。

所有k 个子集的并集等于S.

基本上,在这个分区聚类过程结束时,我们希望找到原始数据集的不同子集,以这种方式,没有实例将属于多个组。这可以在下面的图像中说明:

左边是原始数据,右边是k = 2的分区数据

k = 2时可以使用质心如何执行数据分区的示例

我们如何拆分数据以执行上图中所示的分区?那么,聚类过程的输出是一组质心。质心基本上是每个组的代表性实体,所以如果我们想要对数据进行k分割,那么我们将有k个 质心。

质心也是由我们的数据定义的搜索空间上的点,并且由于每个质心定义了一个组,每个数据点将被分配到距离它最近的质心。

修改聚类的人工蜂群

那么,现在我们知道什么是聚类问题,我们如何修改原来的ABC算法来执行这样的任务?猜猜看,我们没有!是的,这就是你刚刚阅读的内容,我们根本不需要修改我们的ABC实施。我们唯一要做的就是查看聚类问题并将其转化为优化任务!但我们怎么做到这一点?

正如我们在前面的文章中看到的那样,一个明确定义的优化问题需要一个搜索空间,一个集合的维度输入决策变量和一个目标函数。如果我们将人工菌落中的每只蜜蜂看作是我们聚类问题的整体解决方案,那么每只蜜蜂都可以代表一组完整的候选质心!如果我们工作的一个d维空间,我们要执行的k分区上我们的数据,那么每个蜂将是一个ķ · d维向量!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值