我在使用一个样本数据集进行tfidf实验时,一切正常,直到我将fit-transform变量转换为数组。我试图在使用tfidf后查看我的“特征”,当我打印这些值时,它们是有意义的。然而,当我以数组形式打印时,所有值不知为何都变成了零。
打印语句的最后一行的结果是这样的:
(0, 6433) 0.1354882591295125 (0, 18430) 0.057506963357173674 (0, 16902) 0.0887002305355381 (0, 17540) 0.46335455366392575 (0, 19175) 0.2159334960329325 (0, 16590) 0.15130364285967984(0, 9104) 0.15285500637985408 (0, 16595) 0.1890315464705662 : :(24455, 14202) 0.17695626302265938 (24455, 6699) 0.2309569171857742 (24455, 10308) 0.2279428326498053 (24455, 16678) 0.2343740044032419 (24455, 12122) 0.23831874209561996 (24455, 18919) 0.23831874209561996
上面的数字是有意义的,但是当我更改代码行以数组格式打印时 print(features.toarray())
,我得到的是这样的结果:
[[0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] ... [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.] [0. 0. 0. ... 0. 0. 0.]]
我确实检查了每个值,例如 features.toarray()[3][10]
,它们都是 0.0
回答:
我发现我的测试方法是错误的,了解更多关于tf-idf矩阵的信息后,我发现实际上还是有一些值的,每个词都有自己的列,因此只有在文档中独特的词会在矩阵中有值,它们并不是全为零。