-1

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

我实现的非常简单,只是最小-最大归一化(我正在使用 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

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

在此处输入图像描述

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

在此处输入图像描述

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

所以我的问题是,我的算法有问题还是我以错误的方式解释结果?如果我是,标准化后集群应该是什么样子?

4

1 回答 1

0

你的第二个情节不正确。

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

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

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

于 2012-11-29T09:05:38.750 回答