import numpy as np
import matplotlib.pyplot as plt# 两点距离
def distance(e1, e2):return np.sqrt((e1[0]-e2[0])**2+(e1[1]-e2[1])**2)# 集合中心
def means(arr):return np.array([np.mean([e[0] for e in arr]), np.mean([e[1] for e in arr])])# arr中距离a最远的元素,用于初始化聚类中心
def farthest(k_arr, arr):f = [0, 0]max_d = 0for e in arr:d = 0for i in range(k_arr.__len__()):d = d + np.sqrt(distance(k_arr[i], e))if d > max_d:max_d = df = ereturn f# arr中距离a最近的元素,用于聚类
def closest(a, arr):c = arr[1]min_d = distance(a, arr[1])arr = arr[1:]for e in arr:d = distance(a, e)if d < min_d:min_d = dc = ereturn cif __name__=="__main__":## 生成二维随机坐标(如果有数据集就更好)arr = np.random.randint(100, size=(100, 1, 2))[:, 0, :]  # 取所有数据的第0列到最后一列数据,100是上限,默认下限为0# print(arr)## 初始化聚类中心和聚类容器m = 5r = np.random.randint(arr.__len__() - 1)k_arr = np.array([arr[r]])    # 取到随机一个数据print(k_arr)cla_arr = [[]]for i in range(m-1):k = farthest(k_arr, arr)# print("k:",k)k_arr = np.concatenate([k_arr, np.array([k])])  # 竖着拼接这两个元素# print("k_arr",k_arr)cla_arr.append([])# print("cla:",cla_arr)## 迭代聚类n = 20cla_temp = cla_arrfor i in range(n):    # 迭代n次for e in arr:    # 把集合里每一个元素聚到最近的类ki = 0        # 假定距离第一个中心最近min_d = distance(e, k_arr[ki])for j in range(1, k_arr.__len__()):if distance(e, k_arr[j]) < min_d:    # 找到更近的聚类中心min_d = distance(e, k_arr[j])ki = jcla_temp[ki].append(e)# 迭代更新聚类中心for k in range(k_arr.__len__()):if n - 1 == i:breakk_arr[k] = means(cla_temp[k])cla_temp[k] = []print(cla_temp)## 可视化展示col = ['HotPink', 'Aqua', 'Chartreuse', 'yellow', 'LightSalmon']for i in range(m):plt.scatter(k_arr[i][0], k_arr[i][1], linewidth=10, color=col[i])plt.scatter([e[0] for e in cla_temp[i]], [e[1] for e in cla_temp[i]], color=col[i])plt.show()

k-means算法实现python相关推荐

  1. Fuzzy C Means 算法及其 Python 实现——写得很清楚,见原文

    Fuzzy C Means 算法及其 Python 实现 转自:http://note4code.com/2015/04/14/fuzzy-c-means-%E7%AE%97%E6%B3%95%E5% ...

  2. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  3. 分类算法python程序_分类算法——k最近邻算法(Python实现)(文末附工程源代码)...

    kNN算法原理 k最近邻(k-Nearest Neighbor)算法是比较简单的机器学习算法.它采用测量不同特征值之间的距离方法进行分类,思想很简单:如果一个样本在特征空间中的k个最近邻(最相似)的样 ...

  4. 机器学习——聚类之k近邻算法及python使用

    聚类算法之k近邻及python使用 什么是k近邻算法 k近邻算法流程 使用sklearn进行代码实现 数据集介绍 标准化 代码实现 写在开头,套用我的老师的一句话目前所有自然学科的前沿都是在研究数学, ...

  5. K近邻算法的Python实现

    作为『十大机器学习算法』之一的K-近邻(K-Nearest Neighbors)算法是思想简单.易于理解的一种分类和回归算法.今天,我们来一起学习KNN算法的基本原理,并用Python实现该算法,最后 ...

  6. k means算法C语言伪代码,K均值算法(K-Means)

    1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...

  7. WIFI定位实验K近邻算法 C# Python混合实现

    文章目录 前言 一.前期准备 开发环境: 二.Python KNN深度学习 算法 1.库引用 附录:训练数据 2.读入数据 3.预处理数据 三.Sklearn算法 创建模型 1.调整模型参数 2.训练 ...

  8. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  9. 手把手教你在多种无监督聚类算法实现Python(附代码)

    来源: 机器之心 本文约2704字,建议阅读6分钟. 本文简要介绍了多种无监督学习算法的 Python 实现,包括 K 均值聚类.层次聚类.t-SNE 聚类.DBSCAN 聚类. 无监督学习是一类用于 ...

  10. K means 图片压缩

    k-means的基本原理较为清晰,这里不多赘述,本次博客主要通过基础的k means算法进行图像的压缩处理. 原理分析 在彩色图像中,每个像素的大小为3字节(RGB),可以表示的颜色总数为256 * ...

最新文章

  1. 计算机对下列几种存储器访问速度,2005年7月自考02275计算机基础与程序设计真题及答案...
  2. odps结合mysql统计
  3. hdu1196 Lowest Bit
  4. 诗与远方:无题(四十二)
  5. Programmer,Developer,Engineer——软件从业人员的职业规划
  6. 计算机视觉入门和进阶学习
  7. 跟随我在oracle学习php(42)
  8. 基于SSM框架的简单图书管理系统
  9. DolphinPHP(海豚PHP)实战教程
  10. jenkins(六):Jenkins节点管理
  11. 主机甲和主机乙之间使用后退N帧协议(GBN)传输数据,甲的发送窗口为1000,数据帧长为1000字节,信道带宽为100Mb/s,乙每收到一个数据帧......[数据传输率]错题总结
  12. hdu 5294 Tricks Device 最短路建图+最小割
  13. Docker 搭建PHP开发环境
  14. 媒体领域AI能力测评,黑白图像上色、一键微笑哪家强
  15. 初步研究iphone充电方案及充电协议(一)
  16. Intrinsics函数Tips与踩坑
  17. java虚拟机内存查看相关命令
  18. 从华为P20开始的脑洞之旅:AI如何改变未来手机生活
  19. 12、可观测性--告警处理
  20. 逐梦人工智能,普通人也能用百度AI实现梦想

热门文章

  1. PHP自学--第一天
  2. 应试教育下的三大群体
  3. 手动实现Promise 1
  4. bash脚本切换管理员_开始为系统管理员使用Bash脚本
  5. 涉足荒野script_为什么社区经理必须涉足(而不是潜入)社区
  6. 客户端的js js脚本的引入 js的解析过程
  7. CSS 单词间距 word-spacing属性
  8. ECMAScript 的发展历史
  9. 关于总结记录的一点体会
  10. 二.激光SLAM框架学习之A-LOAM框架---介绍及其演示