【发布时间】: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