k-表示在mapreduce中对特定集群中的文件进行分组

时间:2013-09-12 05:02:31

标签: java algorithm hadoop

我是这个hadoop平台的新手。

我已经完成了k-means implementation  here 。但在这里我们grouping points。我需要分组不同的文件。因此,用户必须能够看到file falls in which group

有什么想法。我搜索了很多但却找不到方法。我应该在该代码中做出哪些更改。

**UPDATE2**

我想输入100个文件。

哪一个更好 - 输入directory或输入file1,file2(single)中的所有100个文件。 我们怎样才能handle这个

1 个答案:

答案 0 :(得分:1)

什么是K-means

毫无疑问,K-means是最简单的聚类算法。

首先,k-means是聚类而不是分类。

给你一个人的名字,你不知道这是一个男人或女人,但你的朋友是一个男人有同一个名字,所以你认为他是一个男人,这是一个集群(Acutually,它是一个女人,也许,我们不确定,我们只是提供最可能的答案)。 给你一个男人,你确定他在你附近,所以你可以说他是你的邻居,这是分类。

将文件聚类在不同的文件中。您应该创建模型(K-means创建给定点并将其降至最近中心点的模型。)然后获得最可能的模型 答案。

例如,按文件名对它们进行聚类。一个名为apple的文件可能在fruit组中,一个名为mouse的文件可能在动物组中。(所有这些都取决于你的Points同义词库)


现在,我将向您展示如何对其进行矢量化的示例,嗯,必须是最简单的。

假设你有一个Point同义词库。也许是这样的

Bill Gates  : IT
iphone  :  IT
basketball :  sports
Michael Jordan : sports

四个文件

file1:  I love iphone very much
file2:  I like play basketball
file3: Bill Gates is the richest man.
file4: He is the fans of Michael Jordan.

我们在文件中获得关键词(在点词库中记录)。 然后我们计算每个文件的百分比。 现在,我们得到结果

file1:100%IT,0%运动

file2:0%IT,100%运动

file3:100%IT,0%运动

file4:0%IT,100%运动

然后我们可以得到两个组,IT和体育(通常,在一个文件中,有很多单词,所以真实数据中不存在100%和0%,不介意细节)


想一想,这个例子告诉我们什么。

  1. 模型是某种东西(在这个例子中,它只是一个数字,大部分时间,它是一个公式),它获得数据之间的连接(在这个例子中,这个模型获得文件之间的连接)
  2. 什么是矢量化?仔细看,你会得到轴(X是IT,y是运动)

  3. 为什么我们强调矢量化?现在你找到了一件事!你现在得到轴,所以把它换成K-means,它现在有效,不是吗?!