我正试图在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
但是,我不清楚如何实现这种观察,因为我所拥有的两种数据结构并不常见,而且我不确定如何从中提取数据。
答案 0 :(得分:2)
使用您的代码加载数据后,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_train
和h_test
将是稀疏矩阵。