Matlab k-means
K-means 聚类算法
- Syntax
- Description
- Input Arguments
- Examples
- Train a k-Means Clustering Algorithm
- Partition Data into Two Clusters
- Cluster Data Using Parallel Computing
全文翻译自Matlab官方文档 kmeans
Syntax
idx = kmeans(X,k)
idx = kmeans(X,k,Name,Value)
[idx,C] = kmeans(___)
[idx,C,sumd] = kmeans(___)
[idx,C,sumd,D] = kmeans(___)
Description
idx = kmeans(X,k)
执行k-均值聚类,将size为(n,p)
数据矩阵XXX的划分为k个簇,并返回包含每个簇索引的n*1
向量idx
。xxx的行为点,列为变量。默认情况下,k-means度量为平方欧氏距离和k-means++算法来初始化类中心。
idx=kmeans(X,k,Name,Value)
返回具有由一个或多个(Name,Value)
参数对指定的附加选项的聚类索引。例如,指定余弦距离、使用新初始值重复聚类的次数或使用并行计算。
[idx,C]=kmeans(____)
:C为k*p的矩阵,为k个簇的质心位置。
[idx,C,sumd]=kmeans(____)
:sumd为k*1向量,簇内的点到质心距离的和。
[idx,C,sumd,D]=kmeans(____)
:D为n*k矩阵,为每个点到每个质心的距离。
Input Arguments
- X — Data
Examples
Train a k-Means Clustering Algorithm
采用k均值聚类数据,然后绘制聚类区域。
加载Fisher虹膜数据集,使用花瓣的长度和宽度作为预测值:
load fisheriris
X = meas(:,3:4);figure;
plot(X(:,1),X(:,2),'k*','MarkerSize',5);
title 'Fisher''s Iris Data';
xlabel 'Petal Lengths (cm)';
ylabel 'Petal Widths (cm)';
如下图:
更大的簇似乎被分成一个低方差区域和一个高方差区域。这可能表明较大的簇是两个重叠的簇,故可分为3个簇。
对数据进行聚类,指定k=3个簇:
rng(1); % 固定随机数,保证结果可复现,自己写的可去掉这行
[idx,C] = kmeans(X,3);
k means使用k-means++算法初始化质心,默认情况下使用平方欧氏距离。通过设置’Replicates’的名称-值对参数对来搜索较低的局部最小值。
idx
是与xxx中的观测值相对应的预测聚类索引的向量。C是包含最终质心位置的3*2矩阵。
为可视,迭代一次k-means算法:
% 定义一个网格数据
x1 = min(X(:,1)):0.01:max(X(:,1));
x2 = min(X(:,2)):0.01:max(X(:,2));
[x1G,x2G] = meshgrid(x1,x2);
XGrid = [x1G(:),x2G(:)]; % Defines a fine grid on the plot% 聚类迭代一次
idx2Region = kmeans(XGrid,3,'MaxIter',1,'Start',C);
输出:
Warning: Failed to converge in 1 iterations.
kmeans显示一个警告,指出算法没有收敛,因为k-means只进行了一次迭代。
画图:
figure;
gscatter(XGrid(:,1),XGrid(:,2),idx2Region,...[0,0.75,0.75;0.75,0,0.75;0.75,0.75,0],'..');
hold on;
plot(X(:,1),X(:,2),'k*','MarkerSize',5);
title 'Fisher''s Iris Data';
xlabel 'Petal Lengths (cm)';
ylabel 'Petal Widths (cm)';
legend('Region 1','Region 2','Region 3','Data','Location','SouthEast');
hold off;
得到如下结果:
Partition Data into Two Clusters
随机生成样本数据:
rng default; % For reproducibility
X = [randn(100,2)*0.75+ones(100,2);randn(100,2)*0.5-ones(100,2)];figure;
plot(X(:,1),X(:,2),'.');
title 'Randomly Generated Data';
得到:
图片中的数据好像是两个簇。因此将数据划分为两个簇,然后从五个不同初始化中选择最佳的结果:
opts = statset('Display','final');
[idx,C] = kmeans(X,2,'Distance','cityblock',...'Replicates',5,'Options',opts);
输出:
Replicate 1, 3 iterations, total sum of distances = 201.533.
Replicate 2, 5 iterations, total sum of distances = 201.533.
Replicate 3, 3 iterations, total sum of distances = 201.533.
Replicate 4, 3 iterations, total sum of distances = 201.533.
Replicate 5, 2 iterations, total sum of distances = 201.533.
Best total sum of distances = 201.533
默认情况下,k-means使用k-means++分别初始化初始中心。
绘制聚类和聚类质心:
figure;
plot(X(idx==1,1),X(idx==1,2),'r.','MarkerSize',12)
hold on
plot(X(idx==2,1),X(idx==2,2),'b.','MarkerSize',12)
plot(C(:,1),C(:,2),'kx',...'MarkerSize',15,'LineWidth',3)
legend('Cluster 1','Cluster 2','Centroids',...'Location','NW')
title 'Cluster Assignments and Centroids'
hold off
输出:
通过将idx
作为 silhouette的参数,可以确定簇之间的分离程度。
Cluster Data Using Parallel Computing
聚类大型数据集可能需要时间。如果你有一个并行计算工具箱™license并设置并行计算的选项,然后kmeans并行运行每个集群任务(或复制)。而且,如果Replicates>1
,那么并行计算减少了收敛时间。
从高斯混合模型随机生成大数据集:
Mu = bsxfun(@times,ones(20,30),(1:20)'); % Gaussian mixture mean
rn30 = randn(30,30);
Sigma = rn30'*rn30; % Symmetric and positive-definite covariance
Mdl = gmdistribution(Mu,Sigma); % Define the Gaussian mixture distributionrng(1); % For reproducibility
X = random(Mdl,10000);
Mdl
是一个包含20个分量的30维gm分布模型。X
是由Mdl
生成的10000乘30的数据矩阵。
指定并行计算的选项:
stream = RandStream('mlfg6331_64'); % Random number stream
options = statset('UseParallel',1,'UseSubstreams',1,...'Streams',stream);
RandStream的输入参数mlfg6331_64指定使用乘法滞后Fibonacci生成器算法。options是一个结构数组,具有指定用于控制估计的选项的字段。
使用k-means聚类对数据进行聚类。指定数据中有k=20个集群,并增加迭代次数。通常,目标函数包含局部极小值。指定10个副本以帮助查找较低的本地最小值。
tic; % Start stopwatch timer
[idx,C,sumd,D] = kmeans(X,20,'Options',options,'MaxIter',10000,...'Display','final','Replicates',10);
Starting parallel pool (parpool) using the ‘local’ profile …
connected to 6 workers.
Replicate 5, 72 iterations, total sum of distances = 7.73161e+06.
Replicate 1, 64 iterations, total sum of distances = 7.72988e+06.
Replicate 3, 68 iterations, total sum of distances = 7.72576e+06.
Replicate 4, 84 iterations, total sum of distances = 7.72696e+06.
Replicate 6, 82 iterations, total sum of distances = 7.73006e+06.
Replicate 7, 40 iterations, total sum of distances = 7.73451e+06.
Replicate 2, 194 iterations, total sum of distances = 7.72953e+06.
Replicate 9, 105 iterations, total sum of distances = 7.72064e+06.
Replicate 10, 125 iterations, total sum of distances = 7.72816e+06.
Replicate 8, 70 iterations, total sum of distances = 7.73188e+06.
Best total sum of distances = 7.72064e+06
toc % Terminate stopwatch timer
Elapsed time is 61.915955 seconds.
命令窗口指示有六个线程可用。系统上的线程数量可能会有所不同。命令窗口显示每次复制的迭代次数和终端目标函数值。输出参数包含replicate 9的结果,因为它的总距离之和最低。
Matlab k-means相关推荐
- kmeans改进 matlab,基于距离函数的改进k―means 算法
摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...
- OpenCV的k - means聚类 -对图片进行颜色量化
OpenCV的k - means聚类 目标 学习使用cv2.kmeans()数据聚类函数OpenCV 理解参数 输入参数 样品:它应该的np.float32数据类型,每个特性应该被放在一个单独的列. ...
- OpenCV官方文档 理解k - means聚类
理解k - means聚类 目标 在这一章中,我们将了解k - means聚类的概念,它是如何工作等. 理论 我们将这个处理是常用的一个例子. t恤尺寸问题 考虑一个公司要发布一个新模型的t恤. 显然 ...
- 文献记录(part89)--I-k-means-+:An iterative clustering algorithm based on an enhanced k -means
学习笔记,仅供参考,有错必究 关键词:k均值:解决方案改进:准确的k均值:迭代改进 I-k-means-+:An iterative clustering algorithm based on an ...
- K means 图片压缩
k-means的基本原理较为清晰,这里不多赘述,本次博客主要通过基础的k means算法进行图像的压缩处理. 原理分析 在彩色图像中,每个像素的大小为3字节(RGB),可以表示的颜色总数为256 * ...
- 为了联盟还是为了部落 | K means
1. 问题 人类有个很有趣的现象,一群人在一起,过一段时间就会自发的形成一个个的小团体.好像我们很擅长寻找和自己气质接近的同类.其实不只是人类,数据也有类似情况,这就是聚类(Clustering)的意 ...
- k均值聚类算法(K Means)及其实战案例
算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...
- matlab—— K均值聚类算法的步骤和实例
一.K均值聚类法分为如下几个步骤: 1. 初始化聚类中心 (1)凭经验选择.根据具体问题,凭经验从样本集中选出个 K 比较合适的样本作为初始聚类中心. (2)用前 K 个样本作为初始聚类中心. (3) ...
- matlab k 1 2,试用MATLAB绘出f1[k]={-2,-1,0,1,2}和f2[k]={1,1,1}两离散序列乘法f1[k]×f2[k]的波形。...
试用MATLAB绘出f1[k]={-2,-1,0,1,2}和f2[k]={1,1,1}两离散序列乘法f1[k]×f2[k]的波形. 更多相关问题 在计算股东借款余额占银行资本净额比例时不考虑股东的关联 ...
- k means聚类算法_一文读懂K-means聚类算法
1.引言 什么是聚类?我们通常说,机器学习任务可以分为两类,一类是监督学习,一类是无监督学习.监督学习:训练集有明确标签,监督学习就是寻找问题(又称输入.特征.自变量)与标签(又称输出.目标.因变量) ...
最新文章
- 有了它,AI甚至可以让你知道对方是否真的爱你?
- Delphi下遍历文件夹下所有文件的递归算法
- 成人高考大学计算机基础答案,江苏省2019年成人高考大学计算机基础统考样卷...
- uWSGI 和 nginx 的区别?
- python discuz_pythonDiscuz发帖器的实现
- 余承东:华为腕上穿戴设备市场份额已达全球第一
- java编码规范文档 下载_软件项目实训及课程设计指导——制定待开发项目中各种文档的规范...
- 使用celery执行Django串行异步任务
- 零基础带你学习MySQL—Insert语句以及注意事项(七)
- qt的qfiledialog怎么判断打开的是不是一张图片_花瓣网画板图片一键导出 设计师速来围观...
- 《我也能做CTO之程序员职业规划》之四:直线定律
- java的基本数据类型转换。
- python实现sip协议_SIP协议的常见命令 - HouWeiGui的个人空间 - OSCHINA - 中文开源技术交流社区...
- CH9102国产USB转高速串口芯片兼容替代CP2102
- linux格式化u盘给win7,u盘一直显示格式化在虚拟机上安装win7系统怎么安装linux
- Blender导出模型到maya
- 洛谷-P1007-魔法少女
- JAVA基础(for语句的统计思想)
- echarts之静态与动态地图
- 诊所信息管理系统C语言课程设计
热门文章
- 【校园网代理连接问题】已解决,“该设备或资源(Web 代理)未设置为接受端口“7890”上的连接“
- 流媒体弱网优化之路(FEC)——FEC原理简介
- 作为“混合云第一股” 青云科技上市背后的逻辑
- 【计算机网络】1.3 ——计算机网络的定义和分类
- 论文解读-HybridRNAbind:预测结构注释和无序注释蛋白质的RNA相互作用残基
- 【笔记】NandFlash介绍
- WM_COMMAND介绍和用法
- [科普]嫦娥四号的中继卫星鹊桥,所处的拉格朗日L2点是什么?
- 拉格朗日乘法和L1、L2正则化
- solidworks二次开发