Spark对HashingTF使用什么哈希函数,如何复制它?

发布于 2021-01-29 14:56:06

Spark MLLIb具有HashingTF()函数,该函数根据每个术语的哈希值计算文档术语频率。

1)它使用什么函数进行哈希处理?

2)如何从Python获得相同的哈希值?

3)如果我想为给定的单个输入计算散列输出,而不计算术语“频率”,我该怎么做?

关注者
0
被浏览
165
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如果您有疑问,通常检查来源。给定项的存储区确定如下:

    def indexOf(self, term):
        """ Returns the index of the input term. """
        return hash(term) % self.numFeatures
    

    如您所见,这只是hash存储桶的一个普通的旧模块数。

    最终哈希只是每个存储区计数的向量(为简便起见,我省略了docstring和RDD的情况):

    def transform(self, document):
        freq = {}
        for term in document:
            i = self.indexOf(term)
            freq[i] = freq.get(i, 0) + 1.0
        return Vectors.sparse(self.numFeatures, freq.items())
    

    如果您想忽略频率,则可以将其set(document)用作输入,但是我怀疑这里有很多好处。要创建sethash无论如何都要计算每个元素。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看