【问题标题】:Misplaced centroid in clusters簇中的质心错位
【发布时间】:2012-11-17 03:24:55
【问题描述】:

所以我实现了一些聚类算法,我应该创建一个算法来规范化数据并比较有和没有归一化的聚类。

我实现的非常简单,只是最小-最大标准化(顺便说一句,我使用的是 Matlab):

 function [dataNorm] = nMinMax(data)
 [x, y] = size(data);
 dataNorm = zeros(x, y);

 for j = 1:y
     m = min(data(:,j));
     M = max(data(:,j));
     for i = 1:x
         n = (data(i,j) - m)/(M-m);
         dataNorm(i,j) = n;
     end
 end  
 end

这就是我从没有标准化的聚类中得到的结果:

现在它变得奇怪了,在规范化之后,这就是我得到的:

集群是相同的,当我认为它应该改进结果时......

所以我的问题是,我的算法是否存在问题,或者我是否以错误的方式解释了结果?如果是,归一化后的集群应该是什么样子?

【问题讨论】:

  • 如果我理解正确,您的标准化应该使值从 0 变为 1。但是在第二个图中,值是从 0 到 6。似乎您绘制了非标准化数据和质心用于标准化数据。
  • 集群在标准化后应该看起来一样。但是,在您的情况下,由于您分别对每一列进行规范化,因此很难说最终结果将如何与原始结果进行比较,除非规范化值的范围为 0 到 1。

标签: matlab cluster-analysis octave k-means centroid


【解决方案1】:

您的第二个情节不正确。

您正在绘制 归一化 聚类中心,但未归一化 数据集。标准化后,您的数据应该在 [0:1] 范围内,但显然不是 - 但您的集群意味着是。注意到它们在 0:1 框内吗?

难怪他们不匹配。绘制归一化数据集,或对集群中心应用反向归一化以获得它们的非归一化位置。

但是,您的原始数据集“几乎是正方形”。 X 和 Y 轴的取值范围相同,大约为 -6 到 +6; X 和 Y 的差异明显小于簇分离。因此,如果您没有看到归一化对该数据集的任何影响,这并不奇怪。尝试使用更难的数据集,其中轴的缩放比例大不相同,簇具有不同的大小(对象数量)、扩展(即空间大小)和形状,并且簇的分离不太明显。

【讨论】:

  • 谢谢,纠正了这个问题,集群看起来仍然一样,但这显然不是问题 :)
  • 不,因为您的 X 轴和 Y 轴的值范围大致相同,线性最小-最大归一化应该对您的玩具数据集几乎没有影响。尝试使用 X 轴和 Y 轴的缩放比例非常不同的方法!
猜你喜欢
  • 2012-11-03
  • 2018-08-19
  • 2017-10-07
  • 2021-06-13
  • 2020-11-20
  • 2013-09-29
  • 2016-06-15
  • 2021-04-04
  • 2017-02-07
相关资源
最近更新 更多