2017-01-20 39 views
-1

我正在研究kmeans集群。 我有3d数据集作为no.days,频率,食物 - >日是通过手段&标准偏差(标准差)或更好地说标准化。它给我的范围[-2至14]机器学习,标称数据标准化

- >频率和食物是我的数据集中的NOMINAL数据通过DIVIDE BY MAX(x/max(x))进行归一化,这使得范围[0到1]

问题是kmeans只考虑日轴进行分组,因为这个轴有明显的间隙b/w点,并且几乎忽略了频率和食物中的另外两个(我认为是因为可忽略不计的差距频率和食物变暗)。

如果我只在日轴上应用kmeans(1D),我会得到与我在3D上应用的完全相似的结果(天,频率,食物)。

“之前,我做了X/MAX(X),以及对天,但不能接受”

,所以我想知道有没有办法正常化频率和食品的另外两个标称数据,我们可以得到基于DAY轴的公平缩放。

食品=> 1,2,3 频率=> 1-36

+0

你为什么没有正常化所有的东西? – Mornor

+0

我规范化了每一件事情......因为我的定量数据和平均值和标准偏差都有意义,所以我使用标准化了......但是对于频率和食品来说它没有意义,因为它们是我的分类数据。 –

回答

0

标准化的重点不仅仅是为了让数值变小。

其目的是具有可比较的值范围 - 这对于不同单位的属性来说确实很难,并且对于名义数据来说可能是不可能的。

对于您的数据类型,k-means可能是最差的选择,因为k-means 依靠在连续的值上工作。如果你有标称值,它通常很容易卡住。所以我的主要建议是不使用k-means

对于数据上的k-means to wprk,每个属性的差异1必须相同。所以1天差=食物q和食物2之间的差异。而且因为k-均值是基于平方误差,所以食物1与食物3的差异是食物对食物2的4倍。

除非你有上述属性,不要使用k-means。

0

你可以尝试使用值差度量,VDM(或任何变体),以几乎转换你遇到的每个标称类属性有效数字表示。之后,您可以像往常一样将标准化应用于整个数据集。

的原始定义是在这里:

http://axon.cs.byu.edu/~randy/jair/wilson1.html

虽然它应该很容易找到其他地方的每一个共同的语言实现。

N.B.对于有序的名义属性,比如你的'频率',大部分时间只需将它们表示为整数即可。