【问题标题】:Bag of Words formation for articles文章的词袋形成
【发布时间】:2018-02-27 01:03:56
【问题描述】:

我正在尝试使用sklearn 中的 20 个 NewsGroups 数据集。我使用以下代码将所有训练和测试数据导入到 2 个utils.Bunch 结构中:

from sklearn.datasets import fetch_20newsgroups

# Import Newsgroup data
newsgroups_train = fetch_20newsgroups(subset='train')
newsgroups_test= fetch_20newsgroups(subset='test')

我的最终目标是在数据集上使用朴素贝叶斯分类器来了解它是如何工作的,并看看我能做到多准确。我正在尝试通过用“词袋”表示来为分类器准备数据集。

根据我的研究,我应该能够使用sklearn.feature_extraction.text.HashingVectorizer 完成此操作

但是,我不清楚如何实现这一点,因为我拥有的两个数据结构不寻常,我不确定如何从中提取数据。

【问题讨论】:

  • 您想知道如何为词袋准备模型还是您对此感到好奇?
  • 我想知道如何使用 HashingVectorizer 为词袋准备模型
  • 哈希向量没有反函数,通常使用CountVectorizer比较合适。
  • @ncfirth 我将如何使用它?
  • 类似于下面的答案。我认为您需要先阅读一下您想要使用的方法,然后再提出更多关于 SO 的问题,也许可以开始 here

标签: python scikit-learn


【解决方案1】:

使用您的代码加载数据后,newsgroups_train 是一个包含以下键的字典:

In [3]: newsgroups_train.keys()
Out[3]: dict_keys(['data', 'filenames', 'target_names', 'target', 'DESCR', 'description'])

您可以通过以下方式获取数据:

train_data = newsgroups_train["data"]
test_data = newsgroups_test["data"]

它被存储为一个字符串列表。然后,您可以简单地对data 应用HashVectorizer 函数。

您应该通过.fit().transform() 获得训练和测试数据的稀疏矩阵。例如:

from sklearn.feature_extraction.text import HashingVectorizer
h = HashingVectorizer()
h.fit(train_data)
h_train = h.transform(train_data)
h_test = h.transform(test_data)

那么,h_trainh_test 将是稀疏矩阵。

【讨论】:

  • 对不起,你能详细说明一下fit()transform 吗?这两个操作都是我需要按顺序做的吗?
  • 我明白了。如果我运行您提到的内容,我可以做到这一点。如果我可以进一步向您提问,我已在此评论中为下面的h_test 上传了稀疏矩阵的图像。你能告诉我它是什么以及我应该如何阅读它吗?这真的很有趣,但我觉得有点超出我的深度:imgur.com/a/rfZMK
  • @tushariyer 我没找到h_test
  • 对不起,它是给h_train的。我在 Anaconda-spyder 中使用变量资源管理器
猜你喜欢
  • 2019-02-28
  • 1970-01-01
  • 2013-03-09
  • 1970-01-01
  • 2018-02-09
  • 2011-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多