算法简述

此篇博客用于记录和整理一些重要的算法,以便自己理解和查看。

1.遗传算法

参考博客:超详细的遗传算法--程序猿声

定义:

模拟达尔文生物进化论,进行优胜劣汰、适者生存来寻找问题的最优解

袋鼠问题描述算法:

有很多袋鼠,它们降落到喜玛拉雅山脉的任意地方。目的是寻找喜马拉雅山脉最高的山峰,这些袋鼠并不知道它们的任务是寻找珠穆朗玛峰。但每过几年,就在一些海拔高度较低的地方射杀一些袋鼠。于是,不断有袋鼠死于海拔较低的地方,而越是在海拔高的袋鼠越是能活得更久,也越有机会生儿育女。就这样经过许多年,这些袋鼠们竟然都不自觉地聚拢到了一个个的山峰上,可是在所有的袋鼠中,只有聚拢到珠穆朗玛峰的袋鼠被带回了美丽的澳洲。

优点:

你不需要去了解和定义如何寻找出最优解,只需要每隔一段时间否定一些不符合要求的解。

不足:

不能保证一定获得最优解,就类似于人类的进化,若进化方向错了,可能在进化到最完美之前就已经灭绝。

算法图解:

其他详细情况可进入参考博客查看或百度。

 

模糊C–均值聚类(FCM)是目前比较流行的一种聚类方法,在知识发现以及模式识别等诸多领域应用广泛,它使用在欧几里得空间确定数据点的几何贴近度的概念,将数据分配到不同的聚类,然后确定这些聚类之间的距离,在理论和应用上为其他的模糊聚类分析方法奠定了基础[^2]。 FCM算法可以先初始化聚类中心,然后再执行迭代过程。不过该算法不能确保收敛于一个最优解,其性能依赖于初始聚类中心。因此,要么用另外的快速算法确定初始聚类中心,要么每次用不同的初始聚类中心启动该算法,多次运行FCM [^1]。 FCM聚类算法的核心理解在于隶属度和聚类中心公式的理解,隶属度和聚类中心的计算相互包含,通过多次迭代,最终当目标函数达到某个值,或者达到迭代次数时,则认为聚类完成。需要注意的是,聚类数目要远远小于样本数目 [^3]。 FCM的目标函数为:其中,U表示原矩阵,p表示聚类中心,dik表示样本点xk与第i个类的样本原型pi之间的失真度,一般是用两个向量之间的距离表示,uik表示xk与第i类样本的隶属度。dik是一种距离范数,可表示为:其中,A表示权重。一般性模糊聚类分析的目标函数中m>1,求解过程需在约束条件下,用拉格朗方法求解 [^4]。 ### 示例代码 ```python import numpy as np from sklearn.datasets import make_blobs from sklearn.preprocessing import StandardScaler from sklearn.cluster import KMeans # 生成示例数据 X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0) X = StandardScaler().fit_transform(X) # 使用KMeans初始化聚类中心(这里简单用KMeans代替快速算法确定初始中心) kmeans = KMeans(n_clusters=4, random_state=0).fit(X) initial_centers = kmeans.cluster_centers_ # 这里只是简单示意,没有完整实现FCM算法 # 实际FCM算法需要实现隶属度和聚类中心的迭代更新等操作 print("初始聚类中心:", initial_centers) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值