一、概述

K-means聚类采用类内距离和最小的方式对数据分类,MATLAB中自带K-means算法,最简单的调用如下:

idx=kmeans(x,k)

n-by-p数据矩阵x中的数据划分为k个类簇。x的行对应数据条数,x的列对应数据的维度。注意:当x是向量时,kmeans将其视为n乘1数据矩阵,而不管其方向如何。kmeans返回一个n乘1向量idx,其中包含每个点的簇索引。默认情况下,kmeans使用平方欧氏距离。

二、K-means参数

典型的带参数的K-means调用如下:

[ ... ] = kmeans(..., 'PARAM1',val1, 'PARAM2',val2, ...)

由param和val构成参数键值对进行控制,常用的参数有:

1 'Distance' - 距离度量, 在P维空间中,K-means应该最小化的距离度量

  • 'sqeuclidean'  - 平方欧氏距离(默认值)
  • 'cityblock'       - 绝对差之和,即L1距离
  • 'cosine'          - 1减去点之间夹角的余弦
  • 'correlation'    - 1减去点之间的样本相关性
  • 'hamming'      - 不同位的百分比

2 'Start' - 选择初始簇质心位置的方法

  • 'plus'    - 默认值。根据k-means++算法从X中选择K个观测值。第一个聚类中心从X中随机地选择,然后从剩余的数据点随机地选择每个后续的聚类中心,其概率与距离最近的现有聚类中心的距离成比例。
  • 'sample'  - 随机从X中选择K个观测值.
  • 'uniform' - 从X的分布范围内随机均匀地选择K个点。对于hamming距离无效。
  • 'cluster' - 对X的随机10%子样本执行初步聚类阶段。此初步阶段本身使用“sample”初始化
  • matrix   - 用一个K行P列的矩阵作为初始聚类中心

3 'Replicates' - 重复聚类的次数,每个聚类都有一组新的初始质心,默认为1。

4 'EmptyAction'- 在聚类过程中一个类别丢失了它所有的成员时,需要采用的措施

  • 'singleton' - 创建一个新类簇,该簇由距离其质心最远的一个观测组成(默认值)
  • 'error'     - 空类别作为错误处理.
  • 'drop'      - 删除所有变为空的类簇,并将C和D中的相应值设置为NaN.

5  'Options' - 用于最小化拟合准则的迭代算法的选项, 用statset构建,statset传入的参数包括:

  • 'Display'  - 显示输出的层级。可选 'off', 'iter', 'final'. 其中默认是选择'off'
  • 'MaxIter'  - 最大的迭代次数. 默认100次.
  • 'UseParallel'  - 选择为‘true’或者‘default’,进行并行计算。前提是需要打开并行计算工具箱的parpool,否则设置为默认值‘default’,表示串行计算。
  • 'UseSubstreams'  - 设置为true以可重复的方式并行计算。默认值为false。要重复计算,设置为允许子流的类型:“mlfg6331_64”或“mrg32k3A”.
  • 'Streams'  - 如果“useParallel”为true,“useSubstreams”为false,则“streams”的长度必须等于KMeans使用的工作线程数。如果并行池已打开,则此将是并行池的大小.

三、带参调用示例

一个例子来描述Kmeans如何带参调用。例如以下代码:

最大迭代100000次,采用1-相关性系数作为距离,对数据进行聚类分析。

K=6;
opts = statset('Display','final','MaxIter',100000);
[Idx,C,sumD,D1]=kmeans(dataStandardlized,K,'dist','correlation','Options',opts);
  • dataStandardlized :N*P的输入数据矩阵
  • K: 表示将dataStandardlized划分为几类,为整数
  • Idx :N*1的向量,存储的是每个点的聚类标号
  • C: K*P的矩阵,存储的是K个聚类质心位置
  • sumD: 1*K的和向量,存储的是类间所有点与该类质心点距离之和
  • D1: N*K的矩阵,存储的是每个点与所有质心的距离

其他:

  • 官方资料:https://ww2.mathworks.cn/help/stats/kmeans.html

------分享知识,让人愉悦,原创博文,支持请点赞。

MATLAB K-means聚类代码讲解相关推荐

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

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

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

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

  3. matlab—— K均值聚类算法的步骤和实例

    一.K均值聚类法分为如下几个步骤: 1. 初始化聚类中心 (1)凭经验选择.根据具体问题,凭经验从样本集中选出个 K 比较合适的样本作为初始聚类中心. (2)用前 K 个样本作为初始聚类中心. (3) ...

  4. matlab adsb,SDR# (SDRSharp)代码讲解

    我认为前面讲的这几种类型的代码里,最重要的有两方面:一个是与硬件驱动交互的部分(这部分上一篇已经大致讲了,另外也可以参考我的另一个HackRF代码讲解系列,会找到很多类似的东西,只不过那里调用的lib ...

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

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

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

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

  7. matlab高斯滤波跟中值滤波区别,matlab图像滤波处理代码讲解 均值滤波 中值滤波 高斯滤波...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 (1)均值滤波 function imres = averageFilter(im,N) % imres为均值滤波后的矩阵,参数im为图像的路径,N为滤波 ...

  8. K均值聚类关于初始聚类中心的探讨(matlab程序)

    对应之前发过的:K均值聚类关于初始聚类中心的探讨,补发MATLAB的程序代码. matlab程序: 1. %利用传统K均值随机选取点聚类 clear all; close all; clc; %生成五 ...

  9. 机器学习(十四):K均值聚类(kmeans)

    k均值聚类方法是一种无监督机器学习技术,用于识别数据集中的数据对象集群.有许多不同类型的聚类方法,但k -means是最古老和最平易近人的方法之一.这些特性使得在 Python 中实现k -means ...

最新文章

  1. 将数组A中的内容和数组B中的内容进行交换(数组一样大)
  2. 鸿蒙系统画饼,任正非说在三年内华为鸿蒙系统即可媲美苹果!真的不是“画饼”?...
  3. scrapy-redis 分布式学习记录
  4. boost::function_types::is_callable_builtin用法的测试程序
  5. android 如何使用LaunchMode
  6. primefaces_PrimeFaces Mobile入门
  7. dc持久内存与mysql_Calypso Systems推出测试软件和服务器测试傲腾数据中心级持久内存...
  8. 通过模板页master page和主题theme来实现网站的风格切换
  9. android -------- Data Binding的使用 ( 四 )ListView
  10. 带有审计表的实体框架核心(EF Core)
  11. Linux 查看命令
  12. C语言中字符串的处理方式(一)
  13. 【codevs3945】 完美拓印
  14. 提高抗打击能力_孩子遇挫折就放弃咋办?菲尔普斯法则:培养抗挫力,试试挫折演习...
  15. Linux进程间通信
  16. 洛谷p3764签到题3
  17. matlab求两向量夹角_matlab入门练习
  18. 凡人修仙传显示无法连接服务器,凡人修仙传进不去 无法连接服务器 登陆失败 闪退 黑屏...
  19. matlab 水滴落水图,canvas 水滴图、液体进度条、仿加速球、圆球水波图
  20. 剑灵服务器维护到几点,《剑灵》公布首测具体开放时间 凌晨1点关服

热门文章

  1. python3 set_python3.x 基础三:set集合
  2. C#通过属性名字符串获取、设置对象属性值
  3. 想尽快进入游戏开发行业的必经之路!
  4. 顺序容器STL::list用法
  5. js上传文件;input上传文件;
  6. VMware 虚拟机占用磁盘空间
  7. Linux设备驱动之Kobject、Kset
  8. Taro+react开发(83):taro路由配置
  9. Taro+react开发(38)注意请求接口的/
  10. 前端学习(2454):用户登录