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