2

我想做的是使用 scikit.learn 中的 Kmeans 将纯文本文档聚类为两个类别。

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

来自 scikit.learn 示例数据集是来自新闻组的预定义格式:

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

我想做的是从文本文件中接收数据(20newsgroups 似乎根本不是文本文件,我什至无法解压缩)

我不清楚的是 fetch_20newsgroups 的数据结构以及它是如何工作的。我应该怎么做才能将文本文件转换为所需的格式(fetch_20newsgroups 提供的这种格式)

谢谢

菲奥。

4

1 回答 1

5

scikit-learn 附带的 20 个新闻组数据集加载器获取从http://kdd.ics.uci.edu/databases/20newsgroups/20newsgroups.html的原始站点下载的文本文档的存档,然后以压缩格式将它们缓存在$HOME/scikit_learn_data文件夹。查看20 个新闻组数据集加载器的源代码以获取更多详细信息。

要将您自己的一组文本文件加载为 scikit-learn “bunch”对象,您可以通过将sklearn.datasets.load_files函数指向正确的文件夹来直接使用它。

如果您的数据已经分为 2 个类别(例如,名为“重要”和“不重要”的两个子文件夹),那么您需要使用的不是无监督的聚类算法,而是 MultinomialNB(朴素贝叶斯)、LinearSVC 等分类(线性支持向量机)或 LogisticRegression,在文本分类示例中进行监督。

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

于 2012-10-08T15:51:52.267 回答