kmeans
k聚类则
语法
idx = kmeans(X,k)
idx = kmeans(X,k,名称,值)
[idx,C] = kmeans(___)
[idx,C,sumd] = kmeans(___)
[idx,C,sumd,D] = kmeans(___)
描述
例子
训练k均值聚类算法
使用集群数据k-表示聚类,然后绘制聚类区域。
加载费雪的虹膜数据集。使用花瓣的长度和宽度作为预测指标。
负载fisheririsX = meas(:,3:4);图;情节(X (: 1) X (:, 2),“k *’,“MarkerSize”5);标题“费希尔的虹膜数据”;包含“花瓣长度(厘米)”;ylabel“花瓣宽度(厘米)”;
较大的聚类似乎分裂成一个低方差区域和一个高方差区域。这可能表明较大的集群是两个重叠的集群。
将数据聚类。指定k= 3个集群。
rng (1);%用于再现性[idx,C] = kmeans(X,3);
kmeans
使用k-means++算法的质心初始化和平方欧氏距离默认。方法来搜索较低的局部最小值是一种很好的实践“复制”
名称-值对参数。
idx
预测的聚类指数向量是否对应于X
.C
是一个包含最终质心位置的3 × 2矩阵。
使用kmeans
计算从每个质心到网格上的点的距离。为此,传递质心(C
)和网格上的点到kmeans
,并实现算法的一次迭代。
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(:)];在绘图上定义一个细网格idx2Region = kmeans(XGrid,3,“麦克斯特”, 1“开始”C);
警告:在1个迭代中收敛失败。
将网格中的每个节点分配到最近的质心
kmeans
显示一个警告,说明算法没有收敛,这是您应该预料到的,因为软件只实现了一次迭代。
绘制集群区域。
图;gscatter (XGrid (: 1) XGrid (:, 2), idx2Region,...[0, 0.75, 0.75, 0.75, 0, 0.75, 0.75, 0.75, 0],'..');持有在;情节(X (: 1) X (:, 2),“k *’,“MarkerSize”5);标题“费希尔的虹膜数据”;包含“花瓣长度(厘米)”;ylabel“花瓣宽度(厘米)”;传奇(“地区1”,《区域2》,区域3的,“数据”,“位置”,“东南”);持有从;
将数据划分为两个集群
随机生成样本数据。
rng默认的;%用于再现性X = [randn(100,2)*0.75+ones(100,2);randn(100 2) * 0.5的(100 2)];图;情节(X (: 1) X (:, 2),“。”);标题“随机生成的数据”;
数据中似乎有两个集群。
将数据划分为两个集群,并从五个初始化中选择最佳排列。显示最终输出。
Opts = statset(“显示”,“最后一次”);[idx,C] = kmeans(X,2,“距离”,“cityblock”,...“复制”5,“选项”、选择);
重复1,3次迭代,总距离和= 201.533。重复2,5次迭代,总距离和= 201.533。重复3,3次迭代,总距离和= 201.533。重复4,3次迭代,总距离和= 201.533。复制5,2次迭代,总距离之和= 201.533。最佳总距离之和= 201.533
默认情况下,软件分别使用k——+ +。
绘制聚类和聚类质心。
图;情节(X (idx = = 1,1) X (idx = = 1、2),“r”。,“MarkerSize”, 12)在情节(X (idx = = 2, 1), X (idx = = 2, 2),“b”。,“MarkerSize”12)情节(C (: 1), C (:, 2),“kx”,...“MarkerSize”15岁的“线宽”3)传说(“集群1”,《集群2》,“重心”,...“位置”,“西北”)标题“聚类分配和质心”持有从
您可以通过传递来确定集群的分离程度idx
来轮廓
.
使用并行计算的集群数据
聚类大型数据集可能需要一些时间,特别是在使用在线更新(默认设置)的情况下。如果您拥有并行计算工具箱™许可证,并且您调用了一个工作池,那么kmeans
并行运行每个集群任务(或复制)。因此,如果复制
> 1,则并行计算缩短收敛时间。
由高斯混合模型随机生成一个大数据集。
Mu = bsxfun(@times,ones(20,30),(1:20)');%高斯混合平均Rn30 = randn(30,30);σ = rn30'*rn30;%对称和正定协方差Mdl = gmdistribution(Mu,Sigma);rng (1);%用于再现性X = random(Mdl,10000);
Mdl
是30维的gmdistribution
有20个组件的模型。X
是一个10000
——- - - - - -30.
由矩阵生成的数据Mdl
.
调用并行工作池。指定并行计算的选项。
Pool = parpool;调用工作者流= RandStream(“mlfg6331_64”);%随机数流选项= statset(“UseParallel”, 1“UseSubstreams”, 1...“流”、流);
使用“本地”配置文件启动并行池(parpool)…连接4个工人。
输入参数“mlfg6331_64”
的RandStream
指定使用乘法滞后斐波那契生成器算法。选项
是一个结构数组,其中包含指定用于控制估计的选项的字段。
命令窗口表明有四个工作人员可用。在您的系统中,工作人员的数量可能会有所不同。
使用以下方法对数据进行群集k——集群。指定有k=数据中的20个簇,增加迭代次数。通常,目标函数包含局部极小值。指定10个复制以帮助查找较低的本地最小值。
抽搐;启动秒表计时器[idx,C,sumd,D] = kmeans(X,20,“选项”选项,“麦克斯特”, 10000,...“显示”,“最后一次”,“复制”10);toc终止秒表计时器
重复7次,44次迭代,总距离之和= 7.55218e+06。重复4,95次迭代,总距离之和= 7.53848e+06。复制2,104次迭代,总距离之和= 7.54232e+06。重复6,80次迭代,总距离之和= 7.54237e+06。重复8,111次迭代,总距离之和= 7.54445e+06。重复1,52次迭代,总距离之和= 7.55817e+06。重复5,70次迭代,总距离之和= 7.55278e+06。重复3,94次迭代,总距离之和= 7.54858e+06。重复10次,56次迭代,总距离之和= 7.54547e+06。复制9,83次迭代,总距离之和= 7.53701e+06。 Best total sum of distances = 7.53701e+06 Elapsed time is 3.239232 seconds.
命令窗口显示每个复制的迭代次数和终端目标函数值。输出参数包含复制的结果9
因为它的总距离和最小。
输入参数
X
- - - - - -数据
数字矩阵
数据,指定为数值矩阵。一排排的X
对应于观察结果,列对应于变量。
如果X
是数字向量吗kmeans
把它当做n-by-1数据矩阵,不管它的方向如何。
数据类型:单
|双
k
- - - - - -集群数量
正整数
数据中的群集数目,指定为正整数。
数据类型:单
|双
名称-值对参数
的可选逗号分隔对名称,值
参数。的名字
参数名称和价值
对应的值。的名字
必须出现在单引号内(' '
).您可以以任意顺序指定多个名称和值对参数Name1, Value1,…,的家
.
“距离”、“余弦”,“复制”,10日,“选项”,statset (UseParallel, 1)
指定余弦距离,10
以不同的初始值复制集群,并使用并行计算。
“显示”
- - - - - -要显示的输出级别
“关闭”
(默认)|“最后一次”
|“通路”
要在命令窗口中显示的输出级别,指定为逗号分隔的对,由“显示”
以及以下选项之一:
“最后一次”
—显示最终迭代的结果“通路”
—显示每次迭代的结果“关闭”
-不显示任何内容
例子:“显示”、“最后”
“距离”
- - - - - -距离度量
“sqeuclidean”
(默认)|“cityblock”
|的余弦
|“相关”
|“汉明”
距离度量,单位为p
-维空间,用于最小化,指定为逗号分隔的对,由“距离”
而且“sqeuclidean”
,“cityblock”
,的余弦
,“相关”
,或“汉明”
.
kmeans
对于不同的、支持的距离度量,以不同的方式计算质心簇。万博1manbetx下表总结了可用的距离度量。在公式中,x是观察(即一排X
),c是质心(行向量)。
距离度量 | 描述 | 公式 |
---|---|---|
“sqeuclidean” |
欧式距离的平方(默认值)。每个质心是该聚类中点的平均值。 |
|
“cityblock” |
绝对差的和,即l1的距离。每个质心是该聚类中点的分量中值。 |
|
的余弦 |
1减去点间夹角的余弦(作为向量)。每个质心是该聚类中点的平均值,将这些点归一化为单位欧几里得长度。 |
|
“相关” |
1减去点之间的样本相关性(作为值序列处理)。每个质心是该聚类中点的分量均值,将这些点定心并归一化为零均值和单位标准差。 |
|
“汉明” |
这个指标只适用于二进制数据。 它是不同比特的比例。每个质心是该聚类中点的分量中值。 |
|
例子:“距离”、“cityblock”
“麦克斯特”
- - - - - -最大迭代次数
One hundred.
(默认)|正整数
最大迭代次数,指定为由逗号分隔的对组成的“麦克斯特”
一个正整数。
例子:麦克斯特,1000年
数据类型:双
|单
“OnlinePhase”
- - - - - -在线更新标志
“关闭”
(默认)|“上”
在线更新标志,指定为逗号分隔的对,由“OnlinePhase”
而且“关闭”
或“上”
.
如果OnlinePhase
是在
,然后kmeans
除批量更新阶段外,还执行在线更新阶段。对于大数据集,在线阶段可能很耗时,但保证了解决方案是距离准则的局部最小值。换句话说,软件会找到一个数据分区,其中将任何单个点移动到不同的聚类中都会增加距离的总和。
例子:“OnlinePhase”,“上”
“选项”
- - - - - -为最小化拟合准则控制迭代算法的选项
[]
(默认)|返回的结构数组statset
用于控制用于最小化拟合条件的迭代算法的选项,指定为由逗号分隔的对组成“选项”
和返回的结构数组statset
.这些选项需要并行计算工具箱™。
下表总结了可用的选项。
选项 | 描述 |
---|---|
“流” |
一个
在这种情况下,使用与并行池大小相同的单元格数组。如果并行池未打开,则 |
“UseParallel” |
|
“UseSubstreams” |
设置为真正的 并行计算以可重复的方式并行计算默认是假 .若要可重复计算,请设置流 到允许子流的类型:“mlfg6331_64” 或“mrg32k3a” . |
为了确保更可预测的结果,使用parpool
并在调用之前显式地创建一个并行池kmeans
和设置“选项”,statset (UseParallel, 1)
.
例子:“选项”,statset (UseParallel, 1)
数据类型:结构体
“复制”
- - - - - -使用新的初始聚类中心位置重复聚类的次数
1
(默认)|正整数
使用新的初始聚类中心位置重复聚类的次数,指定为由逗号分隔的对组成的“复制”
一个整数。kmeans
返回最小值的解sumd
.
你可以设置“复制”
的值隐式地提供一个三维数组“开始”
名称-值对参数。
例子:“复制”,5
数据类型:双
|单
“开始”
- - - - - -选择初始聚类质心位置的方法
“+”
(默认)|“集群”
|“样本”
|“统一”
|数字矩阵|数字数组
选择初始聚类质心位置(或种子),指定为逗号分隔的对,由“开始”
而且“集群”
,“+”
,“样本”
,“统一”
一个数字矩阵,或一个数字数组。下表总结了可供选择的种子。
价值 | 描述 |
---|---|
“集群” |
的随机10%子样本上执行初步聚类阶段X .这个初始阶段本身就是使用“样本” . |
“+” (默认) |
选择k 通过执行k——+ +算法用于初始化集群中心。 |
“样本” |
选择k 观察从X 在随机的。 |
“统一” |
选择k 点在范围内均匀随机分布X .对汉明距离无效。 |
数字矩阵 | k ——- - - - - -p质心起始位置矩阵。一排排的开始 对应种子。软件推断k 从第一个维度开始 ,所以你可以进去[] 为k . |
数字数组 | k ——- - - - - -p-r质心起始位置数组。每页的行对应种子。第三维调用集群例程的复制。页面j包含用于复制的种子集j.该软件推断复制数(由“复制” 名称-值对参数)从第三维的大小。 |
例子:“开始”、“样本”
数据类型:字符
|字符串
|双
|单
请注意
软件处理南
S为缺失数据,并删除X
至少包含一个南
.删除X
减少样本量。
输出参数
更多关于
k聚类则
k - means聚类,或劳埃德算法[2],是一种迭代的数据分区算法n观察结果正好是其中之一k由质心定义的簇,其中k在算法开始之前选择。
算法进行如下:
选择k初始集群中心(重心).例如,选择k随机观察(用
“开始”、“样本”
)或使用k-means ++算法用于初始化集群中心(默认值)。计算所有观测到每个质心的点到群集质心的距离。
有两种继续(由
OnlinePhase
):批量更新-将每个观测值分配到最近质心的群集。
在线更新-如果重新分配减少了集群内点到集群质心距离的平方和,则单独将观测值分配到不同的质心。
详情请参见算法.
计算每个聚类中观测值的平均值,得到k新的质心位置。
重复步骤2到4,直到集群分配没有改变,或者达到最大迭代次数。
k——+ +算法
的k——+ +算法使用启发式方法找到质心种子k——集群。根据亚瑟和瓦西里维茨基的说法[1],k- mean++提高了Lloyd 's算法的运行时间,以及最终解的质量。
的k-means++算法选择种子如下,假设簇数为k.
从数据集中均匀随机地选择一个观测值,X.所选观测值为第一质心,并记为c1.
计算从每个观测点到c1.表示之间的距离cj观察结果米作为 .
选择下一个质心,c2随机地X的概率
选择中心j:
计算每个观测点到每个质心的距离,并将每个观测点分配到其最近的质心。
为米= 1,…,n而且p= 1,…,j- 1,选择质心j随机地X的概率
也就是说,选择每个后续的中心,其概率与它自身到你已经选择的最近的中心的距离成正比。
重复步骤4直到k选择质心。
亚瑟和瓦西里维茨基[1]使用几个簇方向的模拟研究来演示k-means++比Lloyd的算法更快地收敛到更低的聚类内点到聚类质心距离的平方和和。
算法
kmeans
使用两阶段迭代算法来最小化点到质心距离的总和,对所有的总和k
集群。第一阶段使用批量更新,其中每次迭代都包括将点重新分配到最近的聚类质心,然后重新计算聚类质心。这个阶段偶尔不收敛到局部最小值的解。也就是说,在一个数据分区中,将任何单个点移动到不同的聚类会增加距离的总和。这对于小数据集更有可能。批处理阶段是快速的,但可能只是将解决方案作为第二个阶段的起点。
第二阶段使用在线更新,如果这样做减少了距离的总和,则单独重新分配点,并且在每次重新分配后重新计算聚类质心。这个阶段的每一次迭代都是通过所有的点。此相位收敛到局部最小值,尽管可能存在其他具有较低总距离和的局部最小值。一般来说,找到全局最小值是通过详尽的起点选择来解决的,但是使用具有随机起点的多个重复通常会得到全局最小值的解决方案。
如果您启用
UseParallel
选项选项
而且复制
> 1,则每个工蚁并行选择种子和集群。
参考文献
亚瑟,大卫和塞尔吉·瓦西里维茨基。“k -means++:仔细播种的优势。”SODA ' 07:第十八届ACM-SIAM离散算法研讨会论文集,2007,第1027-1035页。
[2] Lloyd, Stuart P.“PCM中的最小二乘量化”。IEEE信息论汇刊。第28卷,1982年,129-137页。
[3] Seber, g.a.f.多元观测。霍博肯,新泽西州:约翰·威利父子公司,1984年。
聚类解剖与分析:理论,FORTRAN程序,示例。翻译:J. Goldschmidt纽约:霍尔斯特德出版社,1985年。
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
此函数支持内存不足数据的高数万博1manbetx组,但有一些限制。
只支持随机样例初始化。万博1manbetx万博1manbetx支持语法:
idx = kmeans(X,k)
执行经典的k-均值聚类。[idx,C] = kmeans(X,k)
还返回k
簇中心位置。[idx,C,sumd] = kmeans(X,k)
返回k
点到质心距离的簇内和。[___] = kmeans(___,名称,值)
使用任何其他语法指定附加的名称-值对选项。有效的选项是:“开始”
-用于选择初始聚类质心位置的方法。取值为:“+”
(默认)—选择k
观察从X
使用kmeans++算法的一种变体,适用于高数据。“样本”
——选择k
观察从X
在随机的。数字矩阵-显式指定起始位置的k × p矩阵。
“选项”
对象创建的选项结构statset
函数。对于高数组,kmeans
使用这里列出的字段,忽略选项结构中的所有其他字段:“显示”
-显示级别。的选择是“通路”
(默认),“关闭”
,“最后一次”
.“麦克斯特”
-最大迭代次数。默认是One hundred.
.“TolFun”
-点到质心距离的簇内和的收敛容差。默认是1的军医
.此选项字段仅适用于高数组。
有关更多信息,请参见高大的数组(MATLAB)。
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
如果
开始
方法采用随机选择,初始质心簇位置可能与MATLAB不匹配®.如果行数
X
是固定的,代码生成不删除行吗X
包含南
.簇的质心位于
C
可以有不同于MATLAB中的顺序。在本例中,群集索引在idx
有相应的差异。如果你提供
显示
,其值必须为“关闭”
.如果你提供
流
,它必须是空的和UseSubstreams
必须假
.当你设置
UseParallel
选项真正的
:有些计算甚至可以并行执行
复制
是1
.对于大数据集,当复制
是1
,可考虑设置UseParallel
选项真正的
.kmeans
使用parfor
创建在受支持的共享内存多核平台上并行运行的循环。万博1manbetx并行运行的循环比在单个线程上运行的循环更快。如果您的编译器不支持开放多处理(OpenMP)应用程万博1manbetx序接口或禁用OpenMP库,MATLAB编码器™将parfor
循环,为
循环。要查找受支持的编万博1manbetx译器,请参见万博1manbetx支持编译器.
R2006a之前介绍
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。万博1manbetx
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。