稀疏矩阵上的scikit-learn规范化器过程



我尝试在稀疏矩阵中规范化数据(矩阵为 TF 格式)。我有一个疑问,

使用 sklearn.preprocessing.Normalizer 只是为了规范化我的矩阵是正确的吗?

规范化并使用 TF 矩阵进行聚类是否有意义?

我的矩阵是这样的:

 (0, 0) 1
 (7, 0) 1
 (13, 0)    1
 (31, 0)    4
 (97, 0)    3
 (99, 0)    1

我使用来自 sklearn API 的这段代码:

 transformer = Normalizer().fit(sparse_matrix) # fit does nothing.
 Normalizer(copy=True, norm='l2')
 transformer.transform(sparse_matrix)  

其中稀疏矩阵是我的 TF 矩阵。

输出是这样的:

 (0, 0) 0.04822428221704121
 (0, 1) 0.04822428221704121
 (0, 2) 0.04822428221704121
 (0, 3) 0.14467284665112365
 (0, 4) 0.04822428221704121
 (0, 5) 0.04822428221704121
 (0, 6) 0.09644856443408242
 (0, 7) 0.19289712886816485

由于这是我第一次这样做,我不想犯错。在这些新数据上,我想应用聚类来查看规范化和 TF-IDF 之间的差异。对不起,如果这个问题听起来很傻,但我试图从零开始学习。

sklearn 生成的 tfidf 矩阵已经以适当的方式进行了规范化。

通常的归一化是单位 l2 长度,以使点积、欧几里得距离和余弦返回相同的秩。从理论的角度来看(您应该始终考虑原因),这对应于规范化文档长度:一个文档的两倍于另一个文档的串联将产生相同的向量。

思考几分钟如何检查矩阵是否确实以这种方式规范化。这是一个涉及dot的单行表达式。

相关内容

  • 没有找到相关文章

最新更新