2015-11-29 43 views
0

我有一个一维数据设置如下地图1D数据集三维空间

19, 23, 35, 39, 39, 48, 48, 72, 83, 91, 151, 152, 153, 156, 158, 160, 250, 340, 490 

我想要得到的最频繁的范围内出这个值设置的。我想到了应用k均值聚类算法并采用大多数元素的聚类。我用k = sqrt(n/2)

输出应该151 - 160

当搜索我看到一些文章表明,应用k均值为一维数据集的聚类是不是一个好主意。所以我想到了地图1d数据集到3d空间。我所做的只是假设每个数据点的y和z坐标为0。

有没有更好的方法将这个数据集映射到三维空间? 或者是否有更好的方法来获取1d数据集中最频繁的范围?

回答

1

每次添加维度都会使生活变得更加困难,因此从1维度移动到3维度不太可能让生活更轻松。

我会按顺序对数据进行排序,然后想想如何从右向左移动它。例如,移动指针,使它们之间有N个项目的窗口,并找到窗口左端的值与窗口右端的值之间的差异最小的位置。

如果您确实想使用k-means like clustering,您可以对排序值数组使用动态编程来获得确切答案。从左到右,在每个点上计算,对于i = 1..k,用最低成本的方式将该点的值划分为i个集群。你可以通过考虑每个m的成本,将m..N作为一个单独的聚类,并且看着m-1的答案来计算出将先前划分的最佳成本值分成i-1簇。

+0

感谢您的解释。但我没有得到那个动人的部分。我看到我可以将Jenks分类器用于1D数据集,而不是增加维度。这与你的意思是一样的吗? –

+0

我不是Jenk分类器的粉丝(我更喜欢动态编程),但它是人们所期望并习惯的,因此使用它是有意义的。移动部分是因为我不确定你在问什么。它将回答诸如“在最小可能范围内的十个值在哪里?”等问题。 – mcdowella

+0

嗯。在我的例子中,范围是151-60。 Coz是大部分数字组成的最小范围。我无法选择固定的窗口大小:这是问题所在。这就是为什么我想使用聚类。你有什么想法如何解决这类问题? –