gpt4 book ai didi

matlab - 维诺图matlab

转载 作者:太空宇宙 更新时间:2023-11-03 20:31:14 29 4
gpt4 key购买 nike

我想知道如何在下面的 FCM 方法中显示/绘制 voronoi 图?还有一种方法可以让您从图中观看程序,因为它在 matlab 中放置和计算每个点?几乎就像一辆正在运行的拖车。

  [centers, U, objFun] = fcm(data, 6);
plot(data(:,1), data(:,2),'o');
maxU = max(U);
index1 = find(U(1, :) == maxU);
index2 = find(U(2, :) == maxU);
line(data(index1,1),data(index1, 2),'linestyle','none',...
'marker','*','color','g');
line(data(index2,1),data(index2, 2),'linestyle','none',...
'marker', '*','color','r');

最佳答案

这对于 k-means 和 FCM 应该是相同的,顺便说一句。

要获得 Voronoi 图,您需要计算 Delaunay 三角剖分,然后将 Voronoi 图的一条边与每条 Delaunay 边的平均值正交。

Delaunay 至少在 2D 和 3D 方面有高效的算法。这与计算凸包密切相关。另外,由于您没有很多集群中心,因此可扩展性并不难。

但是,您有一个大问题:您的数据是 6 维的。这意味着您的 Voronoi 单元的边实际上是 5 维的,并且它们不会简单地映射到合理的 2d 投影。

然而,在您使用的 2D 投影中计算 Voronoi 图将不准确。您可以尝试计算 6D 的 Voronoi 单元,并将 voronoi 单元的所有角映射到 2D,然后连接相邻的角。但这可能会产生一大堆乱七八糟的行,恕我直言,这并不是特别有用。

抱歉,据我所知,Voronoi 单元格可视化主要用于理解 2D 中的 k-means 以及如果您有良好的 3D 3D 可视化引擎。

不要误会我的意思:Voronoi 单元正是 k-means 簇的样子。它们不是球体、 Blob 或星星。它们是 Voronoi 单元格:单元格正是将分配给特定均值的区域。

看看这张来自维基百科的图片: K-means on wikipedia

黑线是分隔集群的边界(在二维数据集中是简单的一维线)。在顶部中心,在线右侧有一个蓝色对象。它是蓝色的,因为它在线的右侧 - 它位于蓝色均值的 Voronoi 单元格中。

这是 k-means 的一个关键缺点:它没有大小的概念,就像在集群的空间扩展中一​​样。它们只有一个中心,数据在两个相邻中心之间的正交超平面上 split 。 对于这个特定的数据集,k-means *没有机会正确地分割数据!它没有收敛到一个“坏”的局部最小值,但是正确的解决方案不能 被 k-means 找到,因为簇的大小不同(并且 k-means 幸运的是它们之间没有足够的间隙)。要正确聚类此数据集,您实际上需要类似 EM 的聚类大小概念或基于密度的方法。如果 k-means 能够检测到绿色集群大约是蓝色集群的两倍,它可能会工作得更好(但无论如何它几乎已经是 EM)

关于matlab - 维诺图matlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11527918/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com