主要内容

clusterdata

从数据构建凝聚簇

描述

例子

T.= ClusterData(X隔断返回输入数据矩阵的每个观察(行)的群集索引X给定阈值隔断切割凝聚的分层树连锁函数生成X

clusterdata金宝app支持群集聚类并包含该群集Pdist.连锁, 和函数,您可以单独使用它们进行更详细的分析。看到算法描述更多细节。

例子

T.= ClusterData(X名称,价值使用一个或多个名称值对参数指定群集选项。您必须指定隔断或者MaxClust.例如,指定“MaxClust”,5最多找到5个集群。

例子

全部收缩

使用两种不同的方法在一个随机生成的数据集中查找和可视化最多三个簇:

  1. 指定值的值隔断输入参数。

  2. 指定值的值“MaxClust”名称值对参数。

创建一个样本数据集,包括从三个标准均匀分布中随机生成的数据。

rng (“默认”);%的再现性x = [gallery('sublicatdata'3 [10] 12);......画廊('sublicatdata',[10 3],13)+1.2;......画廊('sublicatdata',[10 3],14)+2.5];y = [α(10,1); 2 *(10,1)); 3 *(10,1))];%实际课程

创建数据的散点图。

scatter3 (X (: 1) X (:, 2), X(:, 3), 100年,y,'填充')标题(“三组随机生成数据”);

图包含轴。具有标题的轴在三个集群中随机生成的数据包含类型分散的对象。

通过指定值3,在数据中找到最多三个群集隔断输入参数。

T1 = clusterdata (X, 3);

因为价值隔断大于2,clusterdata解释隔断为集群的最大数目。

绘制带有结果簇分配的数据。

散射3(x(:,1),x(:,2),x(:,3),100,t1,'填充')标题(聚类的结果);

图包含轴。具有群集标题结果的轴包含类型分散的对象。

通过指定值3来找到最多三个集群“MaxClust”名称值对参数。

t2 = clusterdata(x,'maxclust',3);

绘制带有结果簇分配的数据。

散射3(x(:,1),x(:,2),x(:,3),100,t2,'填充')标题(聚类的结果);

图包含轴。具有群集标题结果的轴包含类型分散的对象。

使用这两种方法,clusterdata标识数据中的三个不同集群。

创建分层集群树并在一个步骤中找到集群。使用三维散点图可视化集群。

从标准均匀分布中创建20,000×3矩阵,产生的样本数据。

rng (“默认”);%的再现性X =兰德(20000 3);

在使用的分层群集树中找到最多四个群集ward联系方法。指定'savememory'作为'上'在不计算距离矩阵的情况下构造簇。否则,如果您的机器没有足够的内存来保存距离矩阵,您可能会收到内存不足的错误。

t = clusterdata(x,'连锁'“沃德”'savememory''上''maxclust'4);

用不同颜色的簇绘制数据。

散射3(x(:,1),x(:,2),x(:,3),10,t)

图包含轴。轴包含类型散射的对象。

clusterdata识别数据中的四个群集。

输入参数

全部收缩

输入数据,指定为具有两个或多个行的数字矩阵。行表示观察,列表示类别或尺寸。

数据类型:单身的|

切割由的分层树定义的阈值连锁,指定为之间的正标量0.2或者一个正整数≥2clusterdata根据指定的值表现不同隔断

  • 如果0 <隔断<2, 然后clusterdata形成集群时不一致值大于隔断

  • 如果隔断是一个整数≥2, 然后clusterdata形成最多隔断集群。

当您指定时隔断,您无法指定任何名称值对参数。

例子:clusterdata (X, 3)

数据类型:单身的|

名称值对参数

指定可选的逗号分离对名称,价值参数。名称是参数名称和价值是相应的价值。名称必须出现在引号内。您可以以任何顺序指定多个名称和值对参数Name1, Value1,…,的家

例子:clusterdata(x,'linkage','ward','maxclust',3)指定创建最多三个集群X使用病房联动。

定义分层集群树中群集的标准,指定为逗号分隔的对组成'标准',要么“不一致”或者'距离'.当您指定时'标准',您还必须指定一个值MaxClust或者隔断

例子:ClusterData(x,'标准','距离','截止',。5)

数据类型:字符|细绳

截断为不一致或距离标准,指定为逗号分隔对,由'隔断'和正标量。clusterdata使用隔断作为节点的高度或不一致系数的阈值,具体取决于值的值标准.如果指定值'隔断'如果不指定定义集群的标准,那么clusterdata用来“不一致”默认情况下的标准。

  • 如果'标准''距离', 然后clusterdata将节点处或节点以下的所有叶子分组为一个簇,只要该节点的高度小于隔断

  • 如果'标准'“不一致”,那么不一致节点的值和其所有子节点必须小于隔断为了clusterdata将它们分组到群集中。

您必须指定隔断或者MaxClust

例子:clusterdata (X,“截止”,0.2)

数据类型:单身的|

计算不一致的值的深度,指定为逗号分隔对组成'深度'和一个数字标量。clusterdata通过查看分层群集树中的每个节点下方的指定深度来评估不一致的值。当您指定时'深度',您还必须指定一个值MaxClust或者隔断

例子:ClusterData(x,'深度',3,'截止',0.5)

数据类型:单身的|

距离度量,指定为逗号分隔对组成'距离'和任何由此接受的距离度量Pdist.函数,如下表所示。当您指定时'距离',您还必须指定一个值MaxClust或者隔断

公制 描述
'euclidean'

欧几里德距离(默认)

'squareduclidean'

平方欧几里德距离。(此选项仅提供效率。它不满足三角不等式。)

'seuclidean'

标准化的欧几里德距离。观察之间的每个坐标差异通过除以标准偏差的相应元素来缩放,s = std(x,'omitnan')

“mahalanobis”

使用样本协方差的Mahalanobis距离XC = COV(x,'omitrows')

'城市街区'

城市街区的距离

'minkowski'

闵可夫斯基距离。默认指数是2。用不同的指数P., 指定P.'minkowski',在那里P.为正标量值:'minkowski',p

'chebbychev'

切比切夫距离(最大坐标差)

'余弦'

一个减去点之间夹角的余弦(作为向量处理)

“相关”

一个减去点之间的样本相关性(视为值序列)

'汉明'

汉明的距离,这是坐标的百分比

'jaccard'

一个减去Jaccard系数,这是不同的非零坐标的百分比

“矛曼”

一个减去样本Spearman的观察之间的等级相关性(视为价值序列)

@DISTFUN

自定义距离功能句柄。距离功能具有表单

功能d2 = distfun(zi,zj)%计算距离......
在哪里

  • 是A.1——- - - - - -N载体含有单个观察。

  • ZJ是一个M2——- - - - - -N包含多重观测的矩阵。DISTFUN必须接受矩阵ZJ具有任意数量的观察。

  • D2是一个M2——- - - - - -1距离矢量,和D2 (k)是观察之间的距离zj(k,:)

如果您的数据不稀疏,则使用内置距离通常比使用功能手柄更快。

有关更多信息,请参见距离度量

例子:clusterdata (X,‘距离’,‘闵可夫斯基’,‘MaxClust’,4)

数据类型:字符|细绳|function_handle.

用于计算群集之间的计算距离的算法,指定为包括的逗号分隔对'连锁'任何被接受的算法连锁函数,如下表所述。当您指定时'连锁',您还必须指定一个值MaxClust或者隔断

算法 描述
'平均数'

未加权的平均距离(UPGMA)

“重心”

质心距离(UPGMC),仅适用于欧氏距离

'完全的'

最远的距离

'中位'

加权质心距离(WPGMC),仅适用于欧氏距离

“单一”

最短的距离

“沃德”

内平方距离(最小方差算法),仅适用于欧氏距离

“加权”

加权平均距离(WPGMA)

有关更多信息,请参见联系

例子:clusterdata (X,‘联系’,‘中等’,‘MaxClust’,4)

数据类型:字符|细绳

形成的最大簇数,指定为逗号分隔对“MaxClust”一个正整数。

您必须指定隔断或者MaxClust

例子:ClusterData(x,'maxclust',4)

数据类型:单身的|

保存内存的选项,指定为逗号分隔的对组成'savememory',要么'上'或者“关闭”.当您指定时'savememory',您还必须指定一个值MaxClust或者隔断

'上'设置原因clusterdata在不计算距离矩阵的情况下构造簇。这'上'当满足这两个条件时,设置适用:

  • 链接“重心”'中位', 或者“沃德”

  • 距离'euclidean'(默认)。

当这两个条件适用时,默认值为'savememory''上'如果X有20列或更少,或者计算机没有足够的内存来存储距离矩阵。否则,默认值'savememory'“关闭”

什么时候'savememory''上', 这连锁运行时间与维度数量成比例(列数X)。什么时候'savememory'“关闭”, 这连锁内存要求与N2,在那里N是观察人数。选择最佳(最小时期)设置'savememory'取决于问题维度,观察数和可用内存。默认值'savememory'设置是最佳设置的粗略近似。

例子:'savememory','开'

数据类型:字符|细绳

输出参数

全部收缩

集群索引,作为数字列向量返回。T.有许多行X,每一行T.表示相应观察的群集分配X

提示

  • 如果'连锁'“重心”或者'中位', 然后连锁可以生成不是单调的群集树。这一结果发生在两个集群联盟的距离时,R.S.,第三个群集小于之间的距离R.S..在这种情况下,在使用默认方向绘制的树形图中,从叶子到根节点的路径采用一些向下步骤。要避免此结果,请指定另一个值'连锁'.下图显示了一个非单调的簇树。

    在这种情况下,集群1和群集3连接到新群集中,而该新群集和群集2之间的距离小于集群1和群集3之间的距离。

算法

如果您指定一个值C隔断输入参数,然后T.=clusterdataX,C)执行以下步骤:

  1. 创建一个向量的欧几里得距离之间的观察X通过使用Pdist.

    y =Pdist.X,'euclidean')

  2. 创建一个凝聚的分层群集树y通过使用连锁与之“单一”计算簇之间最短距离的方法。

    z =连锁(y,'单')

  3. 如果0 <C<2, 用定义群集Z.当不一致的值小于C

    T.=(z,'截止',c)

  4. 如果C是一个整数值≥2, 用找到最大的C群集Z.

    T.=群集(z,'maxclust',c)

替代功能

如果您有一个分层的集群树Z.(输出连锁用于输入数据矩阵的函数X),你可以使用执行凝聚体聚类Z.并返回每个观察(行)的群集分配X

在R2006A之前介绍