首页 > 分享 > 模糊聚类算法实现与应用

模糊聚类算法实现与应用

模糊聚类作业-鸢尾花分类

最新推荐文章于 2021-11-17 16:26:48 发布

匣喧 于 2021-11-06 21:23:15 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

import numpy as np from sklearn import datasets def FCM(X, c_clusters=3, m=2, eps=1e-2): # 随机二维数组shape(150,3),初始化隶属度矩阵 membership_mat = np.random.random((len(X), c_clusters)) # 使Xi的隶属度总和为1,即Xi隶属于每个类别的数值求和为1 membership_mat = np.divide(membership_mat, np.sum(membership_mat, axis=1)[:, np.newaxis]) while True: # 超参数m=2 working_membership_mat = membership_mat ** m # 根据公式计算聚类中心点Centroids.shape->(3,4) C_j Centroids = np.divide(np.dot(working_membership_mat.T, X), np.sum(working_membership_mat.T, axis=1)[:, np.newaxis]) # 该矩阵保存所有实点到每个聚类中心的欧式距离 n_c_distance_mat = np.zeros((len(X), c_clusters)) # shape->(150,3) for i, x in enumerate(X): for j, c in enumerate(Centroids): n_c_distance_mat[i][j] = np.linalg.norm(x - c, 2) # 计算l2范数(欧氏距离) new_membership_mat = np.zeros((len(X), c_clusters)) # 更新模糊矩阵U for i, x in enumerate(X): for j, c in enumerate(Centroids): new_membership_mat[i][j] = 1. / np.sum((n_c_distance_mat[i][j] / n_c_distance_mat[i]) ** (2 / (m - 1))) # 聚类到隶属度变化<eps时,退出循环。 if np.sum(abs(new_membership_mat - membership_mat)) < eps: break membership_mat = new_membership_mat return np.argmax(new_membership_mat, axis=1) if __name__ == '__main__': iris = datasets.load_iris() print(FCM(iris.data))

123456789101112131415161718192021222324252627282930313233343536373839404142434445

相关知识

聚类算法和分类算法总结
Python实现GMM算法:高斯混合模型在数据聚类中的应用与实践
鸢尾花三种聚类算法(K
【机器学习】任务七:聚类算法 (K
有了K均值聚类,为什么还需要DBSCAN聚类算法?
基于sklearn的聚类算法的聚类效果指标
利用GMM对鸢尾花聚类
【Python实例第18讲】affinity propagation聚类算法
## 论文学习—用一个可接受的的剪枝策略来加速动态时间规整聚类的算法
聚类效果的外部评价指标——纯度(Purity)及其Python和matlab实现

网址: 模糊聚类算法实现与应用 https://m.huajiangbk.com/newsview1675269.html

所属分类:花卉
上一篇: 高斯朴素贝叶斯方法进行鸢尾花分类
下一篇: 对鸢尾花数据进行分类的思路