【Python】实现最大最小距离算法
最大最小距离算法基本思想
最大最小距离法是模式识别中一种基于试探的类聚算法,它以欧式距离为基础,取尽可能远的对象作为聚类中心。因此可以避免K-means法初值选取时可能出现的聚类种子过于临近的情况,它不仅能智能确定初试聚类种子的个数,而且提高了划分初试数据集的效率。 该算法以欧氏距离为基础,首先初始一个样本对象作为第1个聚类中心,再选择一个与第1个聚类中心最远的样本作为第2个聚类中心,然后确定其他的聚类中心,直到无新的聚类中心产生。最后将样本按最小距离原则归入最近的类。
最大最小距离聚类算法步骤如下:
实例:
代码:
# 最大最小距离算法的Python实现
# 数据集形式data=[[],[],...,[]]
# 聚类结果形式result=[[[],[],...],[[],[],...],...]
# 其中[]为一个模式样本,[[],[],...]为一个聚类import mathdef start_cluster(data, t):zs = [data[0]] # 聚类中心集,选取第一个模式样本作为第一个聚类中心Z1# 第2步:寻找Z2,并计算阈值TT = step2(data, t, zs)# 第3,4,5步,寻找所有的聚类中心get_clusters(data, zs, T)# 按最近邻分类result = classify(data, zs, T)return result# 分类
def classify(data, zs, T):result = [[] for i in range(len(zs))]for aData in data:min_distance = Tindex = 0for i in range(len(zs)):temp_distance = get_distance(aData, zs[i])if temp_distance < min_distance:min_distance = temp_distanceindex = iresult[index].append(aData)return result# 寻找所有的聚类中心
def get_clusters(data, zs, T):max_min_distance = 0index = 0for i in range(len(data)):min_distance = []for j in range(len(zs)):distance = get_distance(data[i], zs[j])min_distance.append(distance)min_dis = min(dis for dis in min_distance)if min_dis > max_min_distance:max_min_distance = min_disindex = iif max_min_distance > T:zs.append(data[index])# 迭代get_clusters(data, zs, T)# 寻找Z2,并计算阈值T
def step2(data, t, zs):distance = 0index = 0for i in range(len(data)):temp_distance = get_distance(data[i], zs[0])if temp_distance > distance:distance = temp_distanceindex = i# 将Z2加入到聚类中心集中zs.append(data[index])# 计算阈值TT = t * distancereturn T# 计算两个模式样本之间的欧式距离
def get_distance(data1, data2):distance = 0for i in range(len(data1)):distance += pow((data1[i]-data2[i]), 2)return math.sqrt(distance)if __name__=='__main__':data = [[0, 0], [3, 8], [1, 1], [2, 2], [5, 3], [4, 8], [6, 3], [5, 4], [6, 4], [7, 5]]t = 0.5 #比例因子result = start_cluster(data, t)for i in range(len(result)):print("----------第" + str(i+1) + "个聚类----------")print(result[i])
结果:
----------第1个聚类----------
[[0, 0], [1, 1], [2, 2]]
----------第2个聚类----------
[[3, 8], [4, 8]]
----------第3个聚类----------
[[5, 3], [6, 3], [5, 4], [6, 4], [7, 5]]
【Python】实现最大最小距离算法相关推荐
- 聚类算法-最大最小距离算法(实例+代码)
聚类算法-最大最小距离算法(实例+代码) [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/53708042 目录 聚类算法- ...
- Python版本的数据结构书_《用Python解决数据结构与算法问题》
源于经典 数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少, 其中比较著名的一本 problem-solving-with-algorithm ...
- python实现洗牌算法_洗牌算法及 random 中 shuffle 方法和 sample 方法浅析
对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章 <扫雷与 ...
- python实现快排算法(quicksort)
python实现快排算法(quicksort) 快速排序是对冒泡排序的一种改进.它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后 ...
- 【Python排序搜索基本算法】之拓扑排序
[Python排序搜索基本算法]之拓扑排序 版权声明:本文为博主原创文章,未经博主允许不得转载.
- python数据结构推荐书-「算法与数据结构」从入门到进阶吐血整理推荐书单
推荐一下「算法与数据结构」从入门到进阶的书单. 一.入门系列 这些书籍通过图片.打比方等通俗易懂的方法来讲述,让你能达到懂一些基础算法,线性表,堆栈,队列,树,图,DP算法,背包问题等,不要求会实现, ...
- python语言入门w-Python算法基础
有穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止: 确切性:算法的每一步骤必须有确切的定义: 输入项:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条 ...
- gbdt 算法比随机森林容易_用Python实现随机森林算法
CDA数据分析师 出品 拥有高方差使得决策树(secision tress)在处理特定训练数据集时其结果显得相对脆弱.bagging(bootstrap aggregating 的缩写)算法从训练数据 ...
- python分割数字_对python数据切割归并算法的实例讲解
当一个 .txt 文件的数据过于庞大,此时想要对数据进行排序就需要先将数据进行切割,然后通过归并排序,最终实现对整体数据的排序.要实现这个过程我们需要进行以下几步:获取总数据行数:根据行数按照自己的需 ...
最新文章
- robo光线机器人 java_Robocode教程6——用eclipse来写你的机器人!
- @javax.inject.Inject,新的注入依赖规范
- LeetCode - Convert Sorted Array to Binary Search Tree
- python 调用控制台并获取返回结果_python脚本执行CMD命令并返回结果的例子
- 雷军:小米11的屏幕是小米手机有史以来最贵且最好的屏幕
- mysqli_fetch_row,mysqli_fetch_array,mysqli_fetch_assoc区别
- Java二叉搜索树转循环链表,关于java:二叉搜索树转换为单向链表interview1712
- 有道云笔记快捷键使用
- php李炎恢代码,李炎恢老师thinkphp5.1视频教程含课程讲义代码SQL文件php视频
- 《东周列国志》第六十六回 杀宁喜子鱄出奔 戮崔杼庆封独相
- Python 使用Gmail发送邮件
- HYSBZ 3991 寻宝游戏
- 生成 Bingo 卡片
- [艾兰岛]菜鸟用编辑器做传送门——kura酱长期更新
- 拼多多根据ID取商品详情-API
- IDEA 2017.3.4 破解到2099年方法
- SpaceDesk PC版+安卓版(安装包下载)
- 在七牛云建对象存储用于上传图片
- android /system,Android中SystemUI解析
- ppt里面如何插入页脚