hadoop中的DBSCAN
实际上,我不知道map()的键和值应该是什么,输入格式和输出格式应该是什么。如果我通过map()一次读取一个点,那么如何使用一个点计算邻居,因为剩余的点尚未读取。DBSCAN不是一个令人尴尬的并行算法 将其表示为map reduce并非易事 您需要采用一些技巧(例如对数据进行分区,并将每个值映射到分区),或者完全重新设计算法 有许多关于并行DBSCAN的文章。您可能能够在类似map reduce的框架中运行其中一些,或者至少在自定义(非map reduce)纱线引擎上运行这些功能。查看本文: 以下是我的解决方案,可能比本文中的解决方案更容易理解: 首先我会计算你的距离矩阵——它可能是一个稀疏矩阵,只包含那些距离,小于DBSCAN epsilon参数——找到一种实现它的方法 您可以将该距离矩阵映射到多个设备和群集点。您意识到,在这种情况下,并行集群会破坏输入空间,并且您会在一个实例中获得一个集群id,该id可能对应于另一个实例中的另一个id 为了解决这个问题,在reduce步骤中收集所有的核心点,然后检查每个核心点的每个邻居(map,不必是O(n^2),要聪明一点)。如果可以找到其他相近的核心元素,则创建一个包含两个相邻核心的2个集群ID的条目;收集这些id对(减少)。使用这些对,导出正确的全局集群ID 上面的描述听起来可能有点抽象,但它应该给你一个想法hadoop中的DBSCAN,hadoop,mapreduce,data-mining,cluster-analysis,dbscan,Hadoop,Mapreduce,Data Mining,Cluster Analysis,Dbscan,实际上,我不知道map()的键和值应该是什么,输入格式和输出格式应该是什么。如果我通过map()一次读取一个点,那么如何使用一个点计算邻居,因为剩余的点尚未读取。DBSCAN不是一个令人尴尬的并行算法 将其表示为map reduce并非易事 您需要采用一些技巧(例如对数据进行分区,并将每个值映射到分区),或者完全重新设计算法 有许多关于并行DBSCAN的文章。您可能能够在类似map reduce的框架中运行其中一些,或者至少在自定义(非map reduce)纱线引擎上运行这些功能。查看本文: 以