主要内容

clusterdata.

从数据构建凝聚簇

描述

例子

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

clusterdata.万博1manbetx支持聚合集群,并将Pdist.连锁,集群功能,您可以单独使用以进行更详细的分析。看算法描述更多细节。

例子

T.= clusterdata (X名称,价值使用一个或多个名称-值对参数指定集群选项。您必须指定隔断maxclust..例如,指定'maxclust',5找到最多五个群集。

例子

全部收缩

使用两种不同的方法查找并在随机生成的数据集中可视化三个集群:

  1. 的值隔断输入参数。

  2. 的值'maxclust'名称值对参数。

创建由三个标准均匀分布的随机生成的数据组成的示例数据集。

RNG('默认');重复性的%x = [gallery('sublicatdata',[10 3],12);...画廊('sublicatdata',[10 3],13)+1.2;...画廊('sublicatdata'3 [10] 14) + 2.5);y = [(10,1); 2 * ((10, 1)); 3 * ((10, 1))];%实际课程

创建数据散点图。

散射3(x(:,1),x(:,2),x(:,3),100,y,'填充') 标题('三个集群中的随机生成的数据);

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

对象的值为3,在数据中最多找到三个集群隔断输入参数。

t1 = clusterdata(x,3);

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

用生成的群集分配绘制数据。

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

图中包含一个轴。标题为Result of Clustering的轴包含一个类型为scatter的对象。

对象的值为3,最多找到三个集群'maxclust'名称值对参数。

T2 = clusterdata (X,'maxclust',3);

用生成的群集分配绘制数据。

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

图中包含一个轴。标题为Result of Clustering的轴包含一个类型为scatter的对象。

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

创建分层群集树并在一步中查找群集。使用3-D散点图可视化簇。

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

RNG('默认');重复性的%x =兰特(20000,3);

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

T = clusterdata (X,“链接”“沃德”'savememory''上''maxclust'4);

绘制数据以不同颜色显示的每个群集。

scatter3 (X (: 1) X (:, 2), X (:, 3), 10 T)

图中包含一个轴。轴包含一个散点类型的对象。

clusterdata.在数据中标识四个集群。

输入参数

全部收缩

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

数据类型:|双倍的

切割由的分层树定义的阈值连锁,指定为之间的正标量0.2或一个正整数≥2clusterdata.的值会产生不同的行为隔断

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

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

当你指定隔断,您不能指定任何名称-值对参数。

例子:clusterdata(x,3)

数据类型:|双倍的

名称值对参数

指定可选的逗号分离对名称,价值论点。的名字是参数名称和价值是对应的值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数name1,value1,...,namen,valuen

例子:clusterdata (X,“联系”,“病房”,“MaxClust”,3)指定创建最多三个集群X使用病房联动。

定义分层集群树中群集的标准,指定为逗号分隔的对组成“标准”和任何一种'不一致'“距离”.当你指定“标准”,您还必须指定一个值maxclust.隔断

例子:clusterdata (X,“标准”,“距离”,“截止”。5)

数据类型:char|字符串

截止不一致或距离标准,指定为包括的逗号分隔对“截止”一个正标量。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')

“cityblock”

城市街区距离

'minkowski'

Minkowski距离。默认指数为2.使用不同的指数P., 指定P.'minkowski', 在哪里P.是一个正标量值:'minkowski',p

'chebbychev'

Chebychev距离(最大坐标差异)

'余弦'

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

'相关性'

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

'汉明'

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

“jaccard”

1减去Jaccard系数,它是不同的非零坐标的百分比

“枪兵”

1减去观察值之间的样本Spearman等级相关性(作为值序列处理)

@distfun

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

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

  • Zi.是一个1-经过-N载体含有单个观察。

  • ZJ.是一个平方米-经过-N矩阵包含多个观察。distfun必须接受矩阵ZJ.具有任意数量的观察。

  • D2是一个平方米-经过-1距离矢量,和D2(k)是观察之间的距离Zi.ZJ (k,:)

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

有关更多信息,请参阅距离指标

例子:ClusterData(x,'距离','minkowski','maxclust',4)

数据类型:char|字符串|function_handle.

计算集群之间距离的算法,指定为逗号分隔的对组成“链接”和任何由此接受的算法连锁功能,如下表所示。当你指定“链接”,您还必须指定一个值maxclust.隔断

算法 描述
“平均”

未加权的平均距离(UPGMA)

'质心'

质心距离(UPGMC),仅适用于欧几里德距离

“完成”

最远的距离

'中位'

加权质量距离(WPGMC),仅适用于欧几里德距离

'单身的'

最短的距离

“沃德”

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

'加权'

加权平均距离(WPGMA)

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

例子:clusterdata(x,'链接','中位','maxclust',4)

数据类型:char|字符串

要形成的最大集群数,以逗号分隔的对指定,由'maxclust'和一个正整数。

您必须指定隔断maxclust.

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

数据类型:|双倍的

保存内存的选项,指定为逗号分隔的对组成'savememory'和任何一种'上''离开'.当你指定'savememory',您还必须指定一个值maxclust.隔断

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

  • 连锁'质心''中位',或“沃德”

  • 距离'euclidean'(默认)。

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

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

例子:“SaveMemory”,“上”

数据类型:char|字符串

输出参数

全部收缩

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

尖端

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

    在这种情况下,集群1和集群3被加入到一个新的集群中,而这个新集群和集群2之间的距离小于集群1和集群3之间的距离。

算法

如果指定值C为了隔断输入参数,然后T.=clusterdata.X,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