k-均值聚类算法

聚类算法是对样本集按相似性进行分簇,因此,聚类算法能够运行的前提是要有样本集,以及能对样本之间的相似性进行比较的方法。

样本的相似性差异也称为样本距离,相似性比较称为距离度量。

算法基本思想:

K-means 算法的基本思想是让簇内的样本点更“”紧密“”一些。让每个样本点到本簇中心的距离更近一些。让每个样本点到本簇中心的距离的平方和尽量小时k-means算法的优化目标。

import numpy as np
import matplotlib.pyplot as pltdef L2(vecXi,vecXj):'''计算欧式距离函数:param vecXi: 点坐标:param vecXj: 点坐标:return: 两点之间的欧式距离'''return np.sqrt(np.sum(np.power(vecXi-vecXj,2)))def kMeans(S,k,distMeans=L2):'''K-means聚类:param S: 样本集:param k: 簇的个数:param distMeans:欧氏距离函数:return sampleTag:一维数组,存放样本点所对应的簇:return clusterCents:一位数组,存放簇的坐标:return SSE:误差平方和'''m = np.shape(S)[0]#获得样本数量sampleTag = np.zeros(m)#创建m个0的一维数组,用来存放样本点相对应的簇n = np.shape(S)[1]#获得样本集的特征数# 初始化3个簇点坐标,随机定义 np.mat用来定义数组函数clusterCents = np.mat([[-1.93964824,2.33260803],[7.79822795,6.72621783],[10.64183154,0.20088133]])sampleTagChanged = TrueSSE = 0.0while sampleTagChanged:sampleTagChanged = False#防止死循环SSE= 0.0#计算每个样本点到各个簇点的距离for i in range(m):#外层for用来实现从样本集中顺序挑选点进行计算与每个簇点的距离minD = np.inf# np.inf 表示是无穷大minIndex = -1#初始化索引值for j in range(k):#将第i个样本点与k个簇点分别进行计算d = distMeans(clusterCents[j,:],S[i,:])#调用距离函数if d <minD:#查找样本点所属的簇点minD = dminIndex = jif sampleTag[i]!=minIndex:#判断样本点是否所属簇变化sampleTagChanged = TruesampleTag[i] = minIndexSSE+=minD**2print(clusterCents)#簇点散点图plt.scatter(clusterCents[:,0].tolist(),clusterCents[:,1].tolist(),c='r',marker='^',linewidths=7)#样本散点图plt.scatter(S[:,0],S[:,1],c=sampleTag,linewidths=np.power(sampleTag+0.5,2))plt.show()print(SSE)#更新簇点for i in range(k):#np.nonzero(sampleTag[:]==i)筛选第i个簇有哪些样本点,得到样本点的索引值ClustI = S[np.nonzero(sampleTag[:]==i)[0]]#得到第i个簇中样本坐标clusterCents[i,:]=np.mean(ClustI,axis = 0)#求均值,更新簇坐标return clusterCents,sampleTag,SSEif __name__ =='__main__':samples = np.loadtxt("kmeansSamples.txt")clusterCents,sampleTag,SSE = kMeans(samples,3)plt.show()print(clusterCents)print(SSE)

K-means聚类算法代码相关推荐

  1. k means聚类算法_一文读懂K-means聚类算法

    1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...

  2. k means聚类算法_K-Means 聚类算法 20210108

    说到聚类,应先理解聚类和分类的区别 聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来. K-Means 聚类算法有很多种 ...

  3. OpenCV官方文档 理解k - means聚类

    理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...

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

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

  5. OpenCV的k - means聚类 -对图片进行颜色量化

    OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...

  6. K-Means(K均值聚类算法)

    K-Means(K均值聚类算法) 1.前言 要学习聚类算法就要知道聚类学习算法是什么,为什么要学习聚类学习聚类学习算法,有什么用途,下面就简单的做一下介绍,并且详细的说明k-means均值聚类学习算法 ...

  7. k均值聚类算法python_K均值和其他聚类算法:Python快速入门

    k均值聚类算法python This post was originally published here 这篇文章最初发表在这里 Clustering is the grouping of obje ...

  8. 06 聚类算法 - 代码案例二 - K-Means算法和Mini Batch K-Means算法比较

    03 聚类算法 - K-means聚类 04 聚类算法 - 代码案例一 - K-means聚类 05 聚类算法 - 二分K-Means.K-Means++.K-Means||.Canopy.Mini ...

  9. K均值聚类算法(Kmeans)讲解及源码实现

    K均值聚类算法(Kmeans)讲解及源码实现 算法核心 K均值聚类的核心目标是将给定的数据集划分成K个簇,并给出每个数据对应的簇中心点.算法的具体步骤描述如下. 数据预处理,如归一化.离群点处理等. ...

  10. 机器学习之无监督学习-K均值聚类算法

    机器学习之无监督学习-K均值聚类算法 对于无监督学习,有两类重要的应用,一个是聚类,一个是降维.我们今天主要学习聚类中的K均值聚类. 我们先看看下图,图a为原始的数据点,我们想要对图a的数据点进行分类 ...

最新文章

  1. milp的matlab的案例代码_matlab30个案例分析案例6代码
  2. IT部门在企业信息化中的转变
  3. 人均奖金300万,2021年“科学探索奖”名单揭晓:高会军周昆上榜,女性获奖人8位创纪录...
  4. IAR 增加头文件注意事项
  5. 共享卫士2.0版设置说明
  6. 前端框架-后台模板:Xadmin
  7. Nginx跨域问题的案例演示
  8. MongoDB学习笔记(二)使用Java操作MongoDB
  9. jq 控制td只显示一行_CSS让表格里的内容强制显示一行,超出长度显示省略号
  10. mysql 链式查询_MySQL的链接查询
  11. 以jieba为首的主流分词工具总结
  12. Loader 知识梳理(2) initLoader和restartLoader的区别
  13. C++ 对Ctrl+Z的解释
  14. 45、我的C#学习笔记11
  15. 基于XP系统的asp.net运行环境的安装与配置
  16. 解决谷歌disabled状态下操作问题
  17. 如何查询一个网站的域名备案信息?
  18. spring事务之REQUIRED
  19. python 数字转换为汉字大写
  20. p1 p 0xf在c语言中啥意思,单片机控制1位共阴极数码管,控制端P1=0x76;则数码管显示的内容是 答案:H...

热门文章

  1. 【LCT】[COI2009] OTOCI
  2. 那些让你惊掉下巴到肚皮上的python冷知识(二)
  3. 【学算法的辅助练习1】北大POJ2388:Who‘s in the Middle
  4. 庄思浩先生在清华大学的演讲(2002)
  5. C语言switch为什么不执行,求解,为什么switch中的语句不执行?
  6. 拼多多加密后token破解与还原
  7. 【英语六级】【仔细阅读】(2)
  8. X5Pro惊艳双子塔,vivo国际化渐入佳境
  9. linux安装make
  10. DA1458x使用之第三篇——定时器