在scipy中稀疏矩阵的含义是什么?

我有一个自然语言处理任务,并且我在使用scikit-learn。在阅读教程时,我了解到如何对文本进行向量化,以及如何使用这些向量化模型来供分类算法使用。假设我有一些文本,并且我想按照以下方式对其进行向量化:

from sklearn.feature_extraction.text import CountVectorizercorpus =['''计算机科学是计算及其应用的科学和实用方法。'''#这是另一个观点'''它是对方法论程序的可行性、结构、表达和机械化的系统研究,这些程序是信息获取、表示、处理、存储、通信和访问的基础,无论这些信息是以计算机内存中的比特形式编码,还是以生物细胞中的基因和蛋白质结构形式转录。'''         #另一个'''计算机科学家专注于计算理论和计算系统的设计''']vectorizer = CountVectorizer(analyzer='word')X = vectorizer.fit_transform(corpus)print X

问题是我不理解输出的含义,我看不出文本与向量化器返回的矩阵之间有任何关系:

  (0, 12)   3  (0, 33)   1  (0, 20)   3  (0, 45)   7  (0, 34)   1  (0, 2)    6  (0, 28)   1  (0, 4)    1  (0, 47)   2  (0, 10)   2  (0, 22)   1  (0, 3)    1  (0, 21)   1  (0, 42)   1  (0, 40)   1  (0, 26)   5  (0, 16)   1  (0, 38)   1  (0, 15)   1  (0, 23)   1  (0, 25)   1  (0, 29)   1  (0, 44)   1  (0, 49)   1  (0, 1)    1  : :  (0, 30)   1  (0, 37)   1  (0, 9)    1  (0, 0)    1  (0, 19)   2  (0, 50)   1  (0, 41)   1  (0, 14)   1  (0, 5)    1  (0, 7)    1  (0, 18)   4  (0, 24)   1  (0, 27)   1  (0, 48)   1  (0, 17)   1  (0, 31)   1  (0, 39)   1  (0, 6)    1  (0, 8)    1  (0, 35)   1  (0, 36)   1  (0, 46)   1  (0, 13)   1  (0, 11)   1  (0, 43)   1

此外,我不理解当我使用toarray()方法时输出的变化:

print X.toarray()

输出到底是什么意思,它与语料库有什么关系?

[[1 1 6 1 1 1 1 1 1 1 2 1 3 1 1 1 1 1 4 2 3 1 1 1 1 1 5 1 1 1 1 1 1 1 1 1 1  1 1 1 1 1 1 1 1 7 1 2 1 1 1]]

回答:

CountVectorizer生成文档-词矩阵。让我们看一个简化的代码示例:

from sklearn.feature_extraction.text import CountVectorizercorpus =['''计算机硬件''','''计算机数据和软件数据''']vectorizer = CountVectorizer(analyzer='word')X = vectorizer.fit_transform(corpus)print Xprint X.toarray()

你有两个文档,即语料库的元素,以及五个词项,即单词。你可以按以下方式计算文档中的词项数:

      | and computer data hardware software      +-------------------------------------doc 0 |            1             1 doc 1 |   1        1    2                 1 

X以关联的方式表示上述矩阵,即从(行,列)到词项频率的映射,X.toarray()则将X显示为列表的列表。以下是执行结果:

  (1, 0)    1  (0, 1)    1  (1, 1)    1  (1, 2)    2  (0, 3)    1  (1, 4)    1[[0 1 0 1 0] [1 1 2 0 1]]

正如@dmcc所指出的,你遗漏了逗号,这使得corpus只有一个文档。

Related Posts

如何对SVC进行超参数调优?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

如何在初始训练后向模型添加训练数据?

我想在我的scikit-learn模型已经训练完成后再…

使用Google Cloud Function并行运行带有不同用户参数的相同训练作业

我正在寻找一种方法来并行运行带有不同用户参数的相同训练…

加载Keras模型,TypeError: ‘module’ object is not callable

我已经在StackOverflow上搜索并阅读了文档,…

在计算KNN填补方法中特定列中NaN值的”距离平均值”时

当我从头开始实现KNN填补方法来处理缺失数据时,我遇到…

使用巨大的S3 CSV文件或直接从预处理的关系型或NoSQL数据库获取数据的机器学习训练/测试工作

已关闭。此问题需要更多细节或更清晰的说明。目前不接受回…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注