最大最小距离算法基本思想

最大最小距离法是模式识别中一种基于试探的类聚算法,它以欧式距离为基础,取尽可能远的对象作为聚类中心。因此可以避免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】实现最大最小距离算法相关推荐

  1. 聚类算法-最大最小距离算法(实例+代码)

    聚类算法-最大最小距离算法(实例+代码) [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/53708042 目录 聚类算法- ...

  2. Python版本的数据结构书_《用Python解决数据结构与算法问题》

    源于经典 数据结构作为计算机从业人员的必备基础,Java, c 之类的语言有很多这方面的书籍,Python 相对较少, 其中比较著名的一本 problem-solving-with-algorithm ...

  3. python实现洗牌算法_洗牌算法及 random 中 shuffle 方法和 sample 方法浅析

    对于算法书买了一本又一本却没一本读完超过 10%,Leetcode 刷题从来没坚持超过 3 天的我来说,算法能力真的是渣渣.但是,今天决定写一篇跟算法有关的文章.起因是读了吴师兄的文章 <扫雷与 ...

  4. python实现快排算法(quicksort)

    python实现快排算法(quicksort) 快速排序是对冒泡排序的一种改进.它的基本思想是:通过一次排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一不部分的所有数据都要小,然后 ...

  5. 【Python排序搜索基本算法】之拓扑排序

    [Python排序搜索基本算法]之拓扑排序 版权声明:本文为博主原创文章,未经博主允许不得转载.

  6. python数据结构推荐书-「算法与数据结构」从入门到进阶吐血整理推荐书单

    推荐一下「算法与数据结构」从入门到进阶的书单. 一.入门系列 这些书籍通过图片.打比方等通俗易懂的方法来讲述,让你能达到懂一些基础算法,线性表,堆栈,队列,树,图,DP算法,背包问题等,不要求会实现, ...

  7. python语言入门w-Python算法基础

    有穷性:算法的有穷性是指算法必须能在执行有限个步骤之后终止: 确切性:算法的每一步骤必须有确切的定义: 输入项:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条 ...

  8. gbdt 算法比随机森林容易_用Python实现随机森林算法

    CDA数据分析师 出品 拥有高方差使得决策树(secision tress)在处理特定训练数据集时其结果显得相对脆弱.bagging(bootstrap aggregating 的缩写)算法从训练数据 ...

  9. python分割数字_对python数据切割归并算法的实例讲解

    当一个 .txt 文件的数据过于庞大,此时想要对数据进行排序就需要先将数据进行切割,然后通过归并排序,最终实现对整体数据的排序.要实现这个过程我们需要进行以下几步:获取总数据行数:根据行数按照自己的需 ...

最新文章

  1. robo光线机器人 java_Robocode教程6——用eclipse来写你的机器人!
  2. @javax.inject.Inject,新的注入依赖规范
  3. LeetCode - Convert Sorted Array to Binary Search Tree
  4. python 调用控制台并获取返回结果_python脚本执行CMD命令并返回结果的例子
  5. 雷军:小米11的屏幕是小米手机有史以来最贵且最好的屏幕
  6. mysqli_fetch_row,mysqli_fetch_array,mysqli_fetch_assoc区别
  7. Java二叉搜索树转循环链表,关于java:二叉搜索树转换为单向链表interview1712
  8. 有道云笔记快捷键使用
  9. php李炎恢代码,李炎恢老师thinkphp5.1视频教程含课程讲义代码SQL文件php视频
  10. 《东周列国志》第六十六回 杀宁喜子鱄出奔 戮崔杼庆封独相
  11. Python 使用Gmail发送邮件
  12. HYSBZ 3991 寻宝游戏
  13. 生成 Bingo 卡片
  14. [艾兰岛]菜鸟用编辑器做传送门——kura酱长期更新
  15. 拼多多根据ID取商品详情-API
  16. IDEA 2017.3.4 破解到2099年方法
  17. SpaceDesk PC版+安卓版(安装包下载)
  18. 在七牛云建对象存储用于上传图片
  19. android /system,Android中SystemUI解析
  20. ppt里面如何插入页脚

热门文章

  1. pip安装指定版本包
  2. C++——二维vector初始化大小方法
  3. 《C和指针》——宏中容易出现的错误
  4. 《剑指Offer》 二叉树的深度
  5. TextDetection文本检测数据集汇总
  6. 【C++面向对象】类的静态成员函数(static member functions)
  7. 线程名称的获取与修改
  8. css外观样式 1204
  9. linux-权限设置--facl基本
  10. python-pygame声音模块的使用