首页 > 解决方案 > 一个关于 tf-idf 使用 pyspark 的概念问题

问题描述

在 pyspark 的官方文档中,他们有一个 tf-idf 的示例。

hashingTF = HashingTF()
tf = hashingTF.transform(documents)
tf.cache()
idf = IDF().fit(tf)
tfidf = idf.transform(tf)

我也准备好在其他来源中使用类似的代码。问题是:为什么该数据框的名称是 tfidf?结果是否等于 tf * idf 还是仅存储 idf?如果是这样,如何计算 tf*idf?

标签: pysparktf-idf

解决方案


文档HashingTF中所述,Transformer它采用一组标记并生成词频向量。TF 包含在此步骤中。

hashingTF = HashingTF(inputCol="words", outputCol="rawFeatures", numFeatures=20)
featurizedData = hashingTF.transform(wordsData)

Next -IDFEstimator适合数据集并生成IDFModel. IDF 被纳入此步骤,以IDFModel降低频繁出现的令牌的权重。

idf = IDF(inputCol="rawFeatures", outputCol="features")

idf估计器必须适合生产变压器。因此,最后的步骤是:

idfModel = idf.fit(featurizedData)
rescaledData = idfModel.transform(featurizedData)

推荐阅读