scikit.learn和kmeans的新手,如何使用K表示文档(From File)的聚类?

Phy*_*win 2 python parsing machine-learning k-means scikit-learn

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

这是用例场景.我将收到一些样本集,这些样本集将被标记为"重要",并且将被标记为"不重要".

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

dataset = fetch_20newsgroups(subset='all', categories=categories,
                             shuffle=True, random_state=42)
Run Code Online (Sandbox Code Playgroud)

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

我不清楚的是fetch_20newsgroups的数据结构及其工作原理.我该怎么做才能将文本文件转换为所需的格式(fetch_20newsgroups提供的这种格式)

谢谢

叫Phyo.

ogr*_*sel 5

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

要将您自己的一组文本文件作为scikit-learn"束"对象加载,您可以直接使用sklearn.datasets.load_files函数将其指向正确的文件夹.

如果您的数据已经分为两类(例如,两个名为"重要"和"不重要"的子文件夹),那么您需要使用的不是无监督的聚类算法,而是诸如MultinomialNB(朴素贝叶斯),LinearSVC之类的分类(线性支持向量机)或LogisticRegression,它们在文本分类示例中受到监督.

如果您不知道哪个文档属于哪个类别但想要将您的语料库分组为2组类似的文档,那么您可以使用无监督的聚类算法(如KMeans),但这两个聚类不太可能与您的想法相匹配"重要"和"不重要".