【问题标题】:Map 1D Dataset to 3D Space将 1D 数据集映射到 3D 空间
【发布时间】:2016-03-02 23:18:09
【问题描述】:

我有一个如下的一维数据集

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

我想从这个值集中得到最频繁的范围。我想应用 k-mean 聚类算法并采用大多数元素的聚类。我用k = sqrt(n/2)

输出应该是151 - 160

在搜索时,我看到很少有文章建议对一维数据集应用 k-means 聚类不是一个好主意。因此我想到了将 1d 数据集映射到 3d 空间。我所做的只是假设每个数据点的 y 和 z 坐标为 0。

有没有更好的方法将此数据集映射到 3d 空间? 或者有没有更好的方法从一维数据集中获得最频繁的范围?

【问题讨论】:

    标签: java algorithm machine-learning mapping k-means


    【解决方案1】:

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

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

    如果您真的想使用像聚类这样的 k-means,您可以对排序值数组使用动态编程来获得准确的答案。从左到右工作,在每个点计算,对于 i=1..k,将值划分到该点的最低成本方法到 i 个集群。您可以通过考虑每个 m 使 m..N 成为单个集群的成本并查看 m-1 的答案以计算出划分前一个集群的最佳成本,从而为 i 个集群计算出位置 N 的最佳答案值最多为 i-1 个集群。

    【讨论】:

    • 感谢您的解释。但我没有得到那个动人的部分。我看到我可以将 Jenks 分类器用于一维数据集,而不是增加维度。和你的意思一样吗?
    • 我不是 Jenk 分类器的粉丝(我更喜欢动态编程),但这是人们所期望和习惯的,因此使用它是有意义的。移动的部分是因为我不确定你在问什么。它是为了回答诸如“适合最小可能范围的十个值在哪里?”之类的问题
    • 嗯。在我的示例中,范围是 151-60。因为这是由大多数数字组成的最小范围。我无法选择固定的窗口大小:/这就是问题所在。这就是为什么我想到使用集群。你知道如何解决这类问题吗?
    • @ThusithaThilinaDayaratne:为什么 150-160 是最佳答案?为什么不是密度更高的 150-148 或 150-146?
    • @Thusitha Thilina Dayratne 我不知道如何解决您的问题,因为我不知道您的数据是如何生成的,也不知道您为什么需要选择一个范围,所以我不知道不知道什么答案好,什么答案不好。找出一个好的答案的一种方法是计算它会节省或花费你多少钱。当您知道数据是如何生成的时,测试想法的一种方法是编写程序来生成测试数据,在您知道正确答案的情况下,看看您的想法如何处理这些数据。
    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 1970-01-01
    • 2011-04-24
    • 1970-01-01
    • 2014-10-18
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    相关资源
    最近更新 更多