MATLAB K-means聚类代码讲解
一、概述
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聚类代码讲解相关推荐
- OpenCV的k - means聚类 -对图片进行颜色量化
OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...
- OpenCV官方文档 理解k - means聚类
理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...
- matlab—— K均值聚类算法的步骤和实例
一.K均值聚类法分为如下几个步骤: 1. 初始化聚类中心 (1)凭经验选择.根据具体问题,凭经验从样本集中选出个 K 比较合适的样本作为初始聚类中心. (2)用前 K 个样本作为初始聚类中心. (3) ...
- matlab adsb,SDR# (SDRSharp)代码讲解
我认为前面讲的这几种类型的代码里,最重要的有两方面:一个是与硬件驱动交互的部分(这部分上一篇已经大致讲了,另外也可以参考我的另一个HackRF代码讲解系列,会找到很多类似的东西,只不过那里调用的lib ...
- k means聚类算法_K-Means 聚类算法 20210108
说到聚类,应先理解聚类和分类的区别 聚类和分类最大的不同在于:分类的目标是事先已知的,而聚类则不一样,聚类事先不知道目标变量是什么,类别没有像分类那样被预先定义出来. K-Means 聚类算法有很多种 ...
- k means聚类算法_一文读懂K-means聚类算法
1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...
- matlab高斯滤波跟中值滤波区别,matlab图像滤波处理代码讲解 均值滤波 中值滤波 高斯滤波...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 (1)均值滤波 function imres = averageFilter(im,N) % imres为均值滤波后的矩阵,参数im为图像的路径,N为滤波 ...
- K均值聚类关于初始聚类中心的探讨(matlab程序)
对应之前发过的:K均值聚类关于初始聚类中心的探讨,补发MATLAB的程序代码. matlab程序: 1. %利用传统K均值随机选取点聚类 clear all; close all; clc; %生成五 ...
- 机器学习(十四):K均值聚类(kmeans)
k均值聚类方法是一种无监督机器学习技术,用于识别数据集中的数据对象集群.有许多不同类型的聚类方法,但k -means是最古老和最平易近人的方法之一.这些特性使得在 Python 中实现k -means ...
最新文章
- 将数组A中的内容和数组B中的内容进行交换(数组一样大)
- 鸿蒙系统画饼,任正非说在三年内华为鸿蒙系统即可媲美苹果!真的不是“画饼”?...
- scrapy-redis 分布式学习记录
- boost::function_types::is_callable_builtin用法的测试程序
- android 如何使用LaunchMode
- primefaces_PrimeFaces Mobile入门
- dc持久内存与mysql_Calypso Systems推出测试软件和服务器测试傲腾数据中心级持久内存...
- 通过模板页master page和主题theme来实现网站的风格切换
- android -------- Data Binding的使用 ( 四 )ListView
- 带有审计表的实体框架核心(EF Core)
- Linux 查看命令
- C语言中字符串的处理方式(一)
- 【codevs3945】 完美拓印
- 提高抗打击能力_孩子遇挫折就放弃咋办?菲尔普斯法则:培养抗挫力,试试挫折演习...
- Linux进程间通信
- 洛谷p3764签到题3
- matlab求两向量夹角_matlab入门练习
- 凡人修仙传显示无法连接服务器,凡人修仙传进不去 无法连接服务器 登陆失败 闪退 黑屏...
- matlab 水滴落水图,canvas 水滴图、液体进度条、仿加速球、圆球水波图
- 剑灵服务器维护到几点,《剑灵》公布首测具体开放时间 凌晨1点关服