【问题标题】:Iterative kmeans based on mapreduce and hadoop基于 mapreduce 和 hadoop 的迭代 kmeans
【发布时间】:2016-01-30 06:47:00
【问题描述】:

我为 Hadoop 编写了一个简单的 k-means 集群代码(两个独立的程序 - 映射器和化简器)。该代码正在处理我本地盒子上的一个二维点的小数据集。它是用 Python 编写的,我打算使用 Streaming API。

每次运行 mapper 和 reducer 后,都会生成新的中心。这些中心是下一次迭代的输入。

根据建议,我使用了适合多步骤的mrjob,job python,

def steps(self):    
 return [self.mr(mapper=self.anything,

                            combiner=self.anything,
                            reducer=self.anything)]

这只是一次迭代,请告诉我在生成新中心后有什么方法可以反馈给 mapper。我的意思是,正如您在最后一步(“reducer”)中看到的那样,将生成新中心,现在是时候再次将其反馈给映射器(第一步)以计算新中心的新距离,依此类推,直到满足的收敛。

(请不要告诉我有关 Mahout、spark 或任何其他实现的信息,我知道它们。)

【问题讨论】:

标签: python hadoop mrjob


【解决方案1】:

在运行 K-Means 停止执行时,我们通常定义迭代次数或阈值距离。在这种情况下,我们可能想为迭代次数编写一个链图减少。将集群质心的输出写入临时文件并将其提供给下一个映射器。做的次数等于你的阈值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-03
    • 1970-01-01
    • 2012-09-18
    相关资源
    最近更新 更多