【问题标题】:How to cluster new data using cluster centers generated by kmeans如何使用 kmeans 生成的聚类中心对新数据进行聚类
【发布时间】:2016-09-08 06:34:43
【问题描述】:

我在 Matlab 中使用 kmeans 得到了一些聚类中心。

现在有一些新的数据点,我不想用for循环比较每个数据点和聚类中心的距离,因为太慢了。

那我该怎么办。

【问题讨论】:

    标签: matlab vectorization


    【解决方案1】:

    尝试使用 matlab knnsearch(X,Y),其中 X 是表示 kmeans 中心的矩阵,Y 是新数据点的集合。

    http://www.mathworks.com/help/stats/knnsearch.html

    【讨论】:

      【解决方案2】:

      我会做这样的事情。 如果您的新点存储在 coord 中,其中行作为点,列作为坐标,并且您的集群均值类似地存储在 means 中,并且您想知道每个点属于哪个集群最接近 (in )。 那么:

      % compute distance
      d2 = repmat(sum(coord.^2,2),1,size(means,1)) + repmat(sum(means.^2,2)',size(coord,1),1) - 2*coord*means';
      % Assign to nearest cluster
      [~, assigns] = min(d2,[],2);
      

      【讨论】:

      • 或者使用 bsxfun 进行更多的教学:bsxfun(@plus,sum(coord.^2,2),sum(means.^2,2)') - 2*coord*means'跨度>
      猜你喜欢
      • 2021-10-09
      • 2017-10-05
      • 2011-12-08
      • 2015-02-05
      • 2019-11-27
      • 2018-06-14
      • 1970-01-01
      • 2021-11-27
      • 2021-10-30
      相关资源
      最近更新 更多