Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java k-表示在mapreduce中将文件分组到特定集群中_Java_Algorithm_Hadoop - Fatal编程技术网

Java k-表示在mapreduce中将文件分组到特定集群中

Java k-表示在mapreduce中将文件分组到特定集群中,java,algorithm,hadoop,Java,Algorithm,Hadoop,我是这个hadoop平台的新手 我已经完成了k-means实施 . 但这里是分组点。我需要将不同的文件分组。因此,用户必须能够看到哪个文件属于哪个组 有什么想法吗?我找了很多,但找不到办法。我应该在代码中做什么更改 **UPDATE2** 我想输入100个文件 那么,哪一个更好地输入目录中的所有100个文件或输入文件1、文件2(作为单个)。 我们如何处理这件事呢 毫无疑问,K-means是最简单的聚类算法 首先,k-均值是聚类而不是分类。 给你一个人的名字,你不知道他是男人还是女人,但是你的朋

我是这个hadoop平台的新手

我已经完成了
k-means实施
. 但这里是分组点。我需要将不同的文件分组。因此,用户必须能够看到哪个
文件属于哪个组

有什么想法吗?我找了很多,但找不到办法。我应该在代码中做什么更改

**UPDATE2**
我想输入100个文件

那么,哪一个更好地输入
目录中的所有100个文件
或输入文件1、文件2(作为
单个
)。 我们如何处理这件事呢

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

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

给你一个人的名字,你不知道他是男人还是女人,但是你的朋友是一个男人,他有相同的名字,所以你认为他是一个男人,这就是集群(事实上,这是一个女人,也许,我们不确定,我们只是喜欢最可能的答案)。 给你一个男人,你肯定他离你很近,所以你可以说他是你的邻居,这是分类

对不同文件中的文件进行群集。您应该创建模型(K-表示创建给定点的模型并将其放置到最近的中心点),然后获得最可能的结果 回答

例如,按文件名对它们进行聚类。一个名为苹果的文件可能在水果组,一个名为鼠标的文件可能在动物组。(所有这一切都取决于你的点词典)


现在,我将向你们展示一个如何向量化它的例子,嗯,必须是最简单的

假设你有一个点词库。也许像这样

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.

我们将关键字(记录在point叙词表中)放在文件中。 然后我们计算每个文件的百分比。 现在,我们得到了结果

文件1:100%IT,0%运动

文件2:0%IT,100%运动

文件3:100%IT,0%运动

文件4:0%IT,100%运动

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


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

  • 模型是获取数据之间连接的东西(在本例中,它只是一个数字,大多数情况下,它是一个公式)(在本例中,该模型获取文件之间的连接)
  • 什么是矢量化?仔细看,你会得到轴(X是IT,y是运动)

  • 为什么我们强调矢量化?现在你发现了一件事!你现在得到了axis,所以把它替换成K-means,它现在可以工作了,不是吗


  • 显然,您必须事先对文件进行矢量化。如果你在处理文本,你可以使用tf idf权重(也在我的存储库中)。好的。但这就像索引…我将用示例更新我的问题-我正在尝试实现的:)。真的跑了很短的时间,直到不知道你想要什么。是否要对文件的文本内容进行群集?是的,你需要把你的文件转换成向量,因此你需要找到一个能转换成向量空间的词汇表。在你的程序中唯一的区别是第63行。有正确的点。除此之外,我还需要包括索引值。[0:(1,1)]第一次输入数据[0:(2,1)]第二次输入…现在我们通常对所有输入值进行r聚类。?但是在这里我们应该识别索引并做k-means。所以对于0索引或者说0是我的文件名,我们必须这样做k-means,明白吗(对于文件1,我们必须执行k-均值。好的,当然,您可以更改
    VectorWritable
    类并在其中包含索引。您只需在读/写方法中序列化它。非常感谢您提供了一个很好的示例!我知道您想知道什么,但用一句话来说有点困难。这是机器学习的知识。正如@Thomas Jungblut所说,您应该按文件名对文件进行矢量化。要对文件进行矢量化,您需要创建一个模型(可能还需要一个点词典)。你遇到的最困难的事情是如何创建模型,但我不能给你任何建议,因为我不知道你的文件名是什么样的,也许你应该告诉我更多关于文件名的信息。文件名可以是任何作者名或标题。我不知道哪一个更好。有什么建议吗?我给你看了一个例子,希望清楚。要知道如果可能的话,请给我你的邮件id:如果我有疑问,我会给你发邮件