Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 数学:这是k-均值聚类吗?_Math_Cluster Analysis - Fatal编程技术网

Math 数学:这是k-均值聚类吗?

Math 数学:这是k-均值聚类吗?,math,cluster-analysis,Math,Cluster Analysis,你好!!我在一条线上有几点。这些点没有Y标注,只有X标注。我只把它们放在Y维度上,因为我希望能够在同一个点上放置多个点 我想找到n个质心(密度最大的点) 例如,我放置了质心(=绿线)来显示我的意思。这些示例质心没有计算出来,我只是猜测它们会在哪里 在我深入研究数学之前,我想知道这是不是可以用k-means聚类法来解决,还是我走错了方向 谢谢。K-means对噪音相当敏感,你似乎有很多噪音。但是,是的,它可能在一定程度上起作用。另外,它并没有利用您的数据只是一维的这一点 然而,对我来说,听起来好像

你好!!我在一条线上有几点。这些点没有Y标注,只有X标注。我只把它们放在Y维度上,因为我希望能够在同一个点上放置多个点

我想找到n个质心(密度最大的点)

例如,我放置了质心(=绿线)来显示我的意思。这些示例质心没有计算出来,我只是猜测它们会在哪里

在我深入研究数学之前,我想知道这是不是可以用k-means聚类法来解决,还是我走错了方向


谢谢。

K-means对噪音相当敏感,你似乎有很多噪音。但是,是的,它可能在一定程度上起作用。另外,它并没有利用您的数据只是一维的这一点

然而,对我来说,听起来好像你想做一些非常原始的模式搜索。在1D中,最适合您的方法是,然后选择局部密度最大值


“聚类分析”听起来确实更花哨,但经典统计“KDE”可能会产生更好的结果。特别是,您不必事先修复“k”,而且wrt会更加健壮。噪音。

您可以使用K-means,实际上实现非常简单:

  • 选择所需的群集数
  • 随机选择
    k
    点(您可以重复此操作以避免局部最优)
  • 找出每个点到这些
    k
    中心的距离
  • 将点指定到最近的中心
  • 计算每组点的平均值
  • 如果平均值正在更改,请将簇的中心移动到新的平均值,然后转到3
  • 否则完成
  • 或者,您可以使用matlab为您执行以下操作:

    k = 2;
    rng('default') % For reproducibility
    X = [randn(100,1)+ones(100,1);...
         randn(100,1)-ones(100,1)];
    
    opts = statset('Display','final');
    [idx,ctrs] = kmeans(X,k,'Distance','city','Replicates',5,'Options',opts);
    
    plot(X(idx==1,1),X(idx==1,1),'r.','MarkerSize',12)
    hold on
    plot(X(idx==2,1),X(idx==2,1),'b.','MarkerSize',12)
    plot(ctrs(:,1),ctrs(:,1),'kx','MarkerSize',12,'LineWidth',2)
    plot(ctrs(:,1),ctrs(:,1),'ko','MarkerSize',12,'LineWidth',2)
    legend('Cluster 1','Cluster 2','Centroids','Location','NW')
    hold off
    
    我将结果放在对角线上以更好地显示,但实际数据是1D:


    IMO您上错网站了!:)尝试使用图像不起作用(它会给出一个红色的十字架),但使用一维数据集,我想你可以创建簇,然后绘制每个簇的点(即簇作为x轴,点作为Y轴,可能在x轴上有一条线来描述质心?)另请参见:@Adriano我不同意:@Anony Mouse你说得对!