fetch_20newsgroups数据集sklearn中的类别/标签

时间:2018-12-28 10:41:40

标签: python tensorflow scikit-learn k-means

我正在研究集群主题,遵循scikit-learn example

我不明白“类别”和“标签”之间的区别。

在这种情况下,数据集是从下载中获得的:

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

但是我不明白为什么要写这个类别

categories = [
'alt.atheism',
'talk.religion.misc',
'comp.graphics',
'sci.space',

在示例中,它被称为“从训练集中获取”,但是火车在哪里?

labels = dataset.target

我不明白为什么我们需要单独的类别和标签。

顺便说一句,我找到了这个数据集here的资源,而且似乎被分为了

  • train.data
  • train.label
  • train.map
  • test.data
  • test.label
  • test.map

所以我想写

dataset.data

给出一个稀疏矩阵。

所以我的问题是,如何选择类别和标签?如果我没有像本例这样的数据集,我需要任意选择吗?

很抱歉,我的问题是,但我尝试以正确的方式理解此示例。

1 个答案:

答案 0 :(得分:1)

首先,指定类别以从原始数据集中过滤记录。假设仅使用过滤器,我们就会获得1200篇文章。默认情况下,原始数据集具有20个类别。如果不指定类别,则会将所有类别的所有文章拉入数据集中。

'alt.atheism',
'talk.religion.misc',
'comp.graphics',
'sci.space',

而dataset.target用于从数据集中获取每篇文章的标签,我们在上一步中已对其进行了过滤。

labels = dataset.target

标签的大小为1200,每个值代表每篇文章所属的类别。

您只能选择类别。每篇文章都已经有标签,因此我们不必扮演角色。

dataset.target_names将给出标签和类别之间的映射,这意味着标签中的0,1,2表示什么类别。