K-means 聚类

K-means 是一种将输入数据划分成 k 个簇的简单的聚类算法。K-means 反复提炼初 始评估的类中心,步骤如下:

(1) 以随机或猜测的方式初始化类中心 ui,i=1…k;

(2) 将每个数据点归并到离它距离最近的类中心所属的类 ci;

(3) 对所有属于该类的数据点求平均,将平均值作为新的类中心;

(4) 重复步骤(2)和步骤(3)直到收敛。

K-means 试图使类内总方差最小:

xj 是输入数据,并且是矢量。该算法是启发式提炼算法,在很多情形下都适用,但 是并不能保证得到最优的结果。为了避免初始化类中心时没选取好类中心初值所造 成的影响,该算法通常会初始化不同的类中心进行多次运算,然后选择方差 V 最小 的结果。

K-means 算法最大的缺陷是必须预先设定聚类数 k,如果选择不恰当则会导致聚类 出来的结果很差。其优点是容易实现,可以并行计算,并且对于很多别的问题不需 要任何调整就能够直接使用。

6.1.1 SciPy 聚类包

尽管该方法很简单,但我们也没有必要自己去实现它。。SciPy 矢量量化包 scipy.cluster.vq 中有 K-means 的实现,下面是使用方法。

from scipy.cluster.vq import *

class1 = 1.5 * randn(100,2)

class2 = randn(100,2) + array([5,5])

features = vstack((class1,class2))

上面的代码生成两类二维正态分布数据。用 k=2 对这些数据进行聚类:

centroids,variance = kmeans(features,2)

由于 SciPy 中实现的 K-means 会计算若干次(默认为 20 次),并为我们选择方差最 小的结果,所以这里返回的方差并不是我们真正需要的。现在,你可以用 SciPy 包 中的矢量量化函数对每个数据点进行归类:

code,distance = vq(features,centroids)

通过上面得到的 code,我们可以检查是否有归类错误。为了将其可视化,我们可以 画出这些数据点及最终的聚类中心:

figure() ndx = where(code==0)[0]

plot(features[ndx,0],features[ndx,1],'*') ndx = where(code==1)[0] plot(features[ndx,0],features[ndx,1],'r.')

plot(centroids[:,0],centroids[:,1],'go') axis('off')

show()

python使用opencv图像聚类_Python3 OpenCV3图像处理-K-means 聚类相关推荐

  1. python使用openCV图像加载(转化为灰度图像)、平滑图像处理就是将每个像素的值变换为其相邻元素的平均值、可视化平滑处理之后的图像(Blurring Images)

    python使用openCV图像加载(转化为灰度图像).平滑图像处理就是将每个像素的值变换为其相邻元素的平均值.可视化平滑处理之后的图像(Blurring Images) 目录

  2. Python,OpenCV图像金字塔cv2.pyrUp(), cv2.pyrDown()

    Python,OpenCV图像金字塔cv2.pyrUp, cv2.pyrDown 1. 效果图 2. 原理 2.1 什么是图像金字塔 2.2 金字塔分类 2.3 应用 3. 源码 参考 这篇博客将介绍 ...

  3. python使用openCV图像加载(转化为灰度图像)、Canny边缘检测器检测图像的边缘(Detect Edges)

    python使用openCV图像加载(转化为灰度图像).Canny边缘检测器检测图像的边缘(Detect Edges) 目录

  4. python使用openCV图像加载(转化为灰度图像)、使用filter2D函数对图像进行锐化(Sharpen Images)

    python使用openCV图像加载(转化为灰度图像).使用filter2D函数对图像进行锐化(Sharpen Images) 目录

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

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

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

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

  7. python识别图片中的物体_python3+opencv3识别图片中的物体并截取的方法

    运行环境:python3.6.4 opencv3.4.0 # -*- coding:utf-8 -*- """ Note: 使用Python和OpenCV检测图像中的物体 ...

  8. Udacity机器人软件工程师课程笔记(二十一) - 对点云进行集群可视化 - 聚类的分割 - K-means|K均值聚类, DBSCAN算法

    聚类的分割 1.K-均值聚类 (1)K-均值聚类介绍 k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心 ...

  9. 聚类和EM算法——K均值聚类

    20211116 数据分析 | 聚类分析--kmean kmeans最优k值的确定方法-手肘法和轮廓系数法 - 简书 python大战机器学习--聚类和EM算法 注:本文中涉及到的公式一律省略(公式不 ...

  10. 聚类算法中的K均值聚类算法(K-Means clustering)

    =======================================================================               Machine Learni ...

最新文章

  1. CSM+3PAR帮助XXX教育技术中心
  2. mySql存储过程,简单实现实例
  3. frame中src怎么设置成一个变量_webpack中Css的处理
  4. hdu3076ssworld VS DDD 概率dp
  5. Maven系列--maven-compiler-plugin的使用、Maven之Surefire插件
  6. 网页开发者模式调整到手机模式_突破极限?ROG 游戏手机 3 内藏 160Hz 刷新率模式...
  7. 用单片机控制直流电机
  8. 关于List转Json的简单方法
  9. mysql concat字符串拼接函数使用
  10. android 百度输入法表情,百度输入法安卓8.6版本发布,AI输入法成为最懂你的“斗图神器”...
  11. 通过阿里接口查询银行卡信息
  12. 2022年伊始,IT圈还有这些事是你不知道的?
  13. 【H5即时通讯系统PHP源码】支持嵌入+单聊+群聊+可单独封装APP
  14. 从底层源码认知Arraylist
  15. eos代码阅读笔记09- 石墨烯架构Graphene
  16. 什么是云平台,云平台的分类和优势有哪些?
  17. 搜索 php源码,影视搜索php源码
  18. 关于ORACLE_SQL,都在这里了!!!
  19. 解决一个输出文档的问题
  20. KEIL 调试的 ini 文件有什么用?

热门文章

  1. mooon-agent核心设计图
  2. 细说进程、应用程序域与上下文之间的关系(三)—— 深入了解.NET上下文
  3. 多核服务器装SQL2005,提示SQL server服务无法启动
  4. 多种交换机端口镜像 Port Mirroring 配置
  5. 瀏覽器擴展──釋放你的個性
  6. .NET Compact Framework 2.0 SP1 发布了
  7. jsp+servlet+mysql的简单使用
  8. SpringBoot+zk+dubbo架构实践(一):本地部署zookeeper
  9. sql两张表,分组或row_number()取最新的记录SQL
  10. PHP 订单拆单后明细总金额与订单金额存在差异