修改kmeans alghoritm为1d数组,其中顺序很重要

时间:2016-02-10 15:01:32

标签: python cluster-analysis data-mining k-means

我想在一维数组中找到订单/位置很重要的组。我试图使用numpys kmeans2,但只有当我的数字按递增顺序时才有效。 我必须最大化neigbour子阵列之间的平均差异

例如:如果我有数组[1,2,2,8,9,0,0,0,1,1,1]并且我想要获得4个组,则结果应该类似于[1,2,2], [8,9], [0,0,0], [1,1,1]

有没有办法比O(n ^ k)

做得更好

回答:我最终得到了修饰的树状图,我只合并了内部。

1 个答案:

答案 0 :(得分:1)

K-means是关于最小化最小二乘法。其中最大的缺点(有许多)是你需要知道k。你为什么要继承这个缺点?

为什么不用黑客攻击k-means而不是忽略订单,为什么不要反而看一下时间序列分割更改检测方法适合这个问题?

E.g。如果abs(x[i] - x[-1]) > stddev stddev是数据集的标准偏差,则拆分您的时间序列。或者最后10个样本的标准差(在上面的系列中,标准偏差约为3,因此它将分为[1,2,2], [8,9], [0,0,0,1,1,1],因为0到1的变化不显着。