KMeans聚类算法,简短易懂的python代码 - 知乎

代码是抄的知乎

import numpy as np
import random
import matplotlib.pyplot as plt def distance(point1, point2):  # 计算距离(欧几里得距离)return np.sqrt(np.sum((point1 - point2) ** 2))def k_means(data, k, max_iter=10000):centers = {}  # 初始聚类中心# 初始化,随机选k个样本作为初始聚类中心。 random.sample(): 随机不重复抽取k个值n_data = data.shape[0]   # 样本个数for idx, i in enumerate(random.sample(range(n_data), k)):# idx取值范围[0, k-1],代表第几个聚类中心;  data[i]为随机选取的样本作为聚类中心centers[idx] = data[i]  # 开始迭代for i in range(max_iter):  # 迭代次数print("开始第{}次迭代".format(i+1))clusters = {}    # 聚类结果,聚类中心的索引idx -> [样本集合]for j in range(k):  # 初始化为空列表clusters[j] = []for sample in data:  # 遍历每个样本distances = []  # 计算该样本到每个聚类中心的距离 (只会有k个元素)for c in centers:  # 遍历每个聚类中心# 添加该样本点到聚类中心的距离distances.append(distance(sample, centers[c])) idx = np.argmin(distances)  # 最小距离的索引clusters[idx].append(sample)   # 将该样本添加到第idx个聚类中心pre_centers = centers.copy()  # 记录之前的聚类中心点for c in clusters.keys():# 重新计算中心点(计算该聚类中心的所有样本的均值)centers[c] = np.mean(clusters[c], axis=0)is_convergent = Truefor c in centers:if distance(pre_centers[c], centers[c]) > 1e-8:  # 中心点是否变化is_convergent = Falsebreakif is_convergent == True:  # 如果新旧聚类中心不变,则迭代停止breakreturn centers, clustersdef predict(p_data, centers):  # 预测新样本点所在的类# 计算p_data 到每个聚类中心的距离,然后返回距离最小所在的聚类。distances = [distance(p_data, centers[c]) for c in centers]  return np.argmin(distances)x=np.random.randint(0,high=10,size=(200,2))
centers,clusters = k_means(x,3)
print (centers)for center in centers:plt.scatter(centers[center][0],centers[center][1],marker='*',s=150)colors = ['r','b','y','m','c','g']print(clusters)
for c in clusters:for p in clusters[c]:plt.scatter(p[0],p[1],c=colors[c])plt.show()

kmeans 具体应用基站分配和Python代码相关推荐

  1. KMeans算法实现步骤介绍及Python代码

    文章目录 一.KMeans算法的步骤 二.KMeans实现过程中需要注意的地方 1.初始聚类中心的确定 2. 常用的距离度量 3. 聚类效果的衡量 SSE 4.迭代结束条件 5.空簇的处理 三.结果展 ...

  2. 聚类 python 代码_不足 20 行 Python 代码,高效实现 k-means 均值聚类算法

    下载好向圈APP可以快速联系圈友 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 不足 20 行 Python 代码,高效实现 k-means 均值聚类算法-1.jpg (143.81 KB, ...

  3. k-means算法详解及python代码

    K-means算法原理 K-means聚类属于原型聚类(基于原型的聚类,prototype-based clustering).原型聚类算法假设聚类结构能够通过一组原型进行刻画,在现实聚类任务中极为常 ...

  4. kmeans算法详解和python代码实现

    kmeans算法详解和python代码实现 kmeans算法 无监督学习和监督学习 监督学习: 是通过已知类别的样本分类器的参数,来达到所要求性能的过程 简单来说,就是让计算机去学习我们已经创建好了的 ...

  5. 科研初体验之Linux服务器的入门使用,关于分配了Linux账号之后怎么用,以及怎么利用Linux服务器来跑我们的python代码

    前情提要 如果有人看了我之前发的乱七八糟的博客的话,应该就能了解到,我之前是计算机专业大三的学生,好不容易get到了保研的名额,前段时间就一直在操练LeetCode,到处报夏令营啊,预推免什么的,最后 ...

  6. 【机器学习】一文读懂层次聚类(Python代码)

    本篇和大家介绍下层次聚类,先通过一个简单的例子介绍它的基本理论,然后再用一个实战案例Python代码实现聚类效果. 首先要说,聚类属于机器学习的无监督学习,而且也分很多种方法,比如大家熟知的有K-me ...

  7. 一文读懂层次聚类(Python代码)

    本篇想和大家介绍下层次聚类,先通过一个简单的例子介绍它的基本理论,然后再用一个实战案例Python代码实现聚类效果. 首先要说,聚类属于机器学习的无监督学习,而且也分很多种方法,比如大家熟知的有K-m ...

  8. knn算法python代码_K-最近邻分类算法(KNN)及python实现

    一.引入 问题:确定绿色圆是属于红色三角形.还是蓝色正方形? KNN的思想: 从上图中我们可以看到,图中的数据集是良好的数据,即都打好了label,一类是蓝色的正方形,一类是红色的三角形,那个绿色的圆 ...

  9. python必备基础代码-机器学习算法基础(使用Python代码)

    介绍 谷歌的自动驾驶汽车和机器人受到了很多媒体的关注,但该公司真正的未来是在机器学习领域,这种技术能使计算机变得更聪明,更个性化.-Eric Schmidt(Google董事长) 我们可能生活在人类历 ...

最新文章

  1. 【Python】有道翻译的爬虫实现(前篇)
  2. oracle部署部分整理
  3. docker配置国内镜像源
  4. ORACLE普通表转换成分区表
  5. 九江学院计算机主任黄冬久,陈春生副校长到实验中间调研引导工作
  6. Python入门100题 | 第070题
  7. prometheus接入mysqld_exporter
  8. 从NBear到ADO.NET Entity Framework让我迷惑了
  9. 一行代码让你的python运行速度提高100倍
  10. Jupyter中打印所有结果的解决办法
  11. java字符串排序_对字符串排序持一种宽容的心态
  12. vue中v-html指令的使用之Vue知识点归纳(三)
  13. werkzeug serving.run_simple
  14. 动手学深度学习Pytorch Task03
  15. web项目搜索框智能提示
  16. SOA渐行渐近-怎样给IT系统一个新视角?
  17. php中简单ubb案例,PHP中开发自己的UBB代码
  18. 改变你思维模式的书单
  19. 香港 三星 android6.0,【极光ROM】-【三星NOTE20高通全系列(国行/港版/台版/韩版/美版) N98XX】-【V6.0 Android-R-UC1】...
  20. instant-ngp

热门文章

  1. k8s教程(pod篇)-优先级调度
  2. 机器学习理论与实战(十六)概率图模型04
  3. 代码生成工具_代码生成
  4. 从零开始系统化学Java,大厂面试题汇总
  5. 如何使用命令行执行java程序
  6. 1、 ZigBee简介
  7. 云队友丨间歇性自律持续性懒散,我们到底做错了什么?
  8. unity3d Antialiasing 抗锯齿效果 之渲染效果提升
  9. 《财富自由之路》-李笑来归纳摘要总结
  10. 第十七天 JavaScript、Vue详细总结