2012-10-08 15 views
2

我想要做的就是使用scikit.learn中的Kmeans将纯文本文档分为两类。scikit.learn和kmeans的新手段,如何使用K表示将文档集群化(来自文件)?

这是用例场景。 我将会收到一些将被标记为“重要”并且将被标记为“不重要”的样本集。

从scikit.learn实例数据集是从新闻组预定义的格式:

dataset = fetch_20newsgroups(subset='all', categories=categories, 
          shuffle=True, random_state=42) 

我想要做的就是接收来自文本文件中的数据(20newsgroups似乎不是文本文件,同时,我甚至不能将其解压)

我不清楚的是fetch_20newsgroups的数据结构及其工作原理。 而且我应该做的文本文件转换成需要的格式(由fetch_20newsgroups提供这样的一种)

感谢

叫Phyo什么。

回答

5

随scikit-learn提供的20个新闻组数据集加载程序获取从原始站点下载的文本文档档案(http://kdd.ics.uci.edu/databases/20newsgroups/20newsgroups.html),然后将它们以压缩格式缓存在$HOME/scikit_learn_data文件夹中。有关更多详细信息,请参阅source code of the 20 newsgroups dataset loader

加载您自己的一套文本文件作为scikit学习“一堆”对象,你可以直接将其指向正确的文件夹使用sklearn.datasets.load_files功能。

如果您的数据已经分为两类(例如名为“重要”和“不重要”的两个子文件夹),那么您需要使用的不是一种无监督的聚类算法,而是一种分类,如MultinomialNB贝叶斯),LinearSVC(线性支持向量机)或Logistic回归,它们在text classification example中进行监督。

如果您不知道哪个文档属于哪个类别,但希望将您的语料库分成两组相似的文档,那么您可以使用无监督的聚类算法,例如KMeans,但不太可能会得到匹配的两个聚类你的想法“重要”和“不重要”。

+0

非常感谢您,测试.load_files方法后,我可能对NB和LinearSVC有更多问题。我会在那里邀请你。 –

+0

嘿@ogrisel,你能在这里回答我的问题吗? http://stackoverflow.com/q/13068257/200044我打算在scikit-learn上实现多处理 –

相关问题