如何计算最小圈在一个集群的数据点集可能确定那些最相似?

7视图(30天)
我犯了一个PCA情节和我想计算最小圈在一个集群的数据点集可能确定那些最相似,我怎么能这样做呢?

接受的答案

约翰D 'Errico
约翰D 'Errico 2023年2月14日
让我给一个例子。
2 XY = [randn(20日)* (1 + (5,5);randn (10, 2) * 1.5 + 6 [3]; randn (10, 2) * (1 + 4 [7]];
情节(XY (: 1), XY (:, 2),“o”)
你怎么画圆圈周围似乎三组点什么?我已经说过很多次,我只是使用kmeans。我知道有三组。这是一个严重的问题在任何聚类工具,因为你需要知道有多少集群。缺乏,问题就变得更加困难。再一次,这些都是人类的眼睛/大脑组合也很自然。
clustidx = kmeans (XY, 3);
C = (1 0 0、0 1 0 0 0 1);
散射(XY (: 1), XY (:, 2), [], C (clustidx,:))
所以k - means所做的很好。但它确实需要知道集群搜索的数量。
现在我们可以画边界圆圈。
持有
t = linspace(0, 2 *π);
C = 0 (3,2);
R = 0 (3,1);
颜色=“rgb”;
i = 1:3
印第安纳州=找到(clustidx = =我);
[C(我:),R (i)) = minboundcircle (XY(印第安纳州,1),XY(印第安纳州,2));
情节(C(我,1)+ R(我)* cos (t), C(我,2)+ R(我)* sin (t) (“- - -”、颜色(我)))
结束
持有
现在,我可以用不同的方式做了集群?可能。一个想法可以使用图理论在MATLAB工具。
例如,在相同的数据集,从tihe interpoint距离。
D = squareform (pdist (XY));
现在,如果有真正3独特的群体,那么大约66%的点之间的点之间的距离将会从不同的集群。所以我将取消75%的距离。
D (D > prctile (25 D (:))) = 0;
接下来,创建一个剩下的图。
GD =图(D)
GD =
属性:边缘:[180×2表]节点:(40×0表)
情节(GD)
conncomp函数将识别彼此连接的点集。
conncomp (GD)
ans = 1×40
1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3
正如你所看到的,它确实识别出三个主要的点,虽然一个点断开,有效地视为一个异类。不管怎样,我现在可以建立了上面的情节一样,使用这些连接组件。
2的评论
劳拉
劳拉 2023年2月22日
对不起,我很好奇如果这段代码所描述工作因为我有一个类似的问题。是输出准确?谢谢你从澳大利亚!

登录置评。

更多的答案(2)

图像分析
图像分析 2023年2月13日
编辑:Josh Natanson 2023年2月14日
你的类集群分配。但是我不确定,因为一个特定的集群,什么“最小圈在一个集群组数据点”的意思。你想找到一双点在每个集群接近彼此?你想找到包含/的最小边界为每个集群圈吗?你想要每个集群的边界圆?请澄清。你有多少电脑?你有多少集群?
看到
16条评论

登录置评。


约翰D 'Errico
约翰D 'Errico 2023年2月14日
编辑:约翰D 'Errico 2023年2月14日
多少次你会问同样的问题吗?你继续谈论一个最小的循环。有时是画一个最小的圆。有时候你似乎混淆不同的算法。(为什么我几乎放弃了对你的职位。对不起,但我做到了。)这次是使用最小圆识别集群的相似点,但是你不要说如何确定集群。
问题是,你的问题似乎并不明白这里有几个问题。如果你有一群点,你非常能找到最小边界圆。但mimimal边界圆算法并不是一个聚类工具。所以你不能使用边界圆代码发现一群点你没有首次发现。
我真的很抱歉,但它只是似乎你想做点什么,但不知道什么是参与做你想要的。所以你一直问同一个问题一遍又一遍。
所以,你有一些点(目前在二维主成分分析的结果)。他们可能很稀疏,至少从照片,使一切更加困难。和你的眼睛所看到的几组点。你想要的是一些自动代码,画一个圆你的眼睛看到的各种集群。这似乎是最后的要点3或更多的问题你问。问题是,您需要使用的工具,我们已经表明,至少如果你想做这个的方式是自动的。
首先,进行聚类分析。有许多聚类算法可用,但kmeans一些最常用的工具。
或者,你可以选择任何类似的集群组点自己。例如,我贴出代码的文件交换(selectdata),允许用户选择使用套索组点。画一条曲线的分在一组,和它会告诉你点。或者你可以告诉代码使用一个圆形,然后你点击图,扩大圈子,直到它包含你想要的点。我们的想法是,你肯定知道你想看什么。所以使用鼠标。但如果不是,那么您需要使用一个集群工具。最小的聚类边界圆不是一个工具。
我可以解释为什么一个最小边界圆作为聚类工具不工作吗?这可能是一个好问题。关键是一个边界圆几乎总是由3点控制,有时很少只有2分。如果你把其中的一个或多个点,最小边界圆急剧变化。这使得边界圆,而一个不稳定的,因为它不依赖于任何其他的数据点在圆。这意味着你不能使用它来执行聚类。你需要先使用其他方案。请阅读和理解这最后一段。边界循环本身不是一个聚类工具,也不能作为一个工作。至少不是很好。
一旦你确定的点在任何一个类似的集群,然后使用一个工具我已经表明找到圆,然后画出来。我看不出问题,或者为什么这需要太多的重复问题的话题。
再一次,将问题分解成小的。首先你需要使用集群。我们对你的问题不知道enoiugh知道哪个集群方案是最好的,但很有可能只是选择用鼠标点可能是最好的。
2的评论
约翰D 'Errico
约翰D 'Errico 2023年2月14日
但是,你不能用任何稳定的方式。最小圆是一个可怜的集群识别的点,因为这最小的圆总是基于在任何一组只有几个点。你真的不想做它到底是什么你认为你想做的事。例如:
2 xy = randn(20日);
[C R] = minboundcircle (xy (: 1), xy (:, 2))
C = 1×2
0.0982 - 0.5052
R = 2.4690
t = linspace(0, 2 *π,100);
情节(xy (: 1), xy (:, 2),“波”,R * cost + C (1) R * sin (t) + C (2),“- r”)
平等的
你看到,只有3点总是控制圆的位置和大小?在某些情况下,可能只有2点控制循环。如果你删除一个或更多的点,那么圆的变化很不稳定,完全不可预测的方法。其余的点在圆上根本没有影响圆本身。
你不能使用最小边界圆进行聚类。您可以使用它在您执行集群。但是不做聚类本身。我知道,当你看一组点图片,你看到一个圆圈,其中包含它们。所以你认为圆能做你想做的事情。但是你的眼睛/大脑组合可以做许多事情,使用电脑是非常困难的,和强劲。

登录置评。

类别

找到更多的在时间序列帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!