【问题标题】:scikit-learn Normalizer process on sparse matrixscikit-learn Normalizer 处理稀疏矩阵
【发布时间】:2019-05-29 19:53:50
【问题描述】:

我尝试对稀疏矩阵中的数据进行归一化(矩阵为 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 之间的差异。 如果这个问题听起来很傻,请原谅,但我正在努力从零开始学习。

【问题讨论】:

    标签: python scikit-learn cluster-analysis normalization k-means


    【解决方案1】:

    sklearn 生成的 tfidf 矩阵已经以适当的方式归一化。

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

    想一想如何检查矩阵确实以这种方式归一化。这是一个涉及dot 的单行表达式。

    【讨论】:

      猜你喜欢
      • 2015-08-04
      • 2017-07-10
      • 2012-11-24
      • 2015-09-28
      • 2013-04-12
      • 2013-03-02
      • 2015-07-26
      • 1970-01-01
      • 2018-11-23
      相关资源
      最近更新 更多