gpt4 book ai didi

scala - 如何在 Spark 中正确地将数字特征与文本(词袋)结合起来?

转载 作者:行者123 更新时间:2023-11-30 09:49:05 25 4
gpt4 key购买 nike

我的问题类似于this一个但对于 Spark 来说,最初的问题没有令人满意的答案。

我使用 Spark 2.2 LinearSVC 模型,以推文数据作为输入:推文的文本(已预处理)作为 hash-tfidf 及其月份,如下所示:

val hashingTF = new HashingTF().setInputCol("text").setOutputCol("hash-tf")
.setNumFeatures(30000)
val idf = new IDF().setInputCol("hash-tf").setOutputCol("hash-tfidf")
.setMinDocFreq(10)
val monthIndexer = new StringIndexer().setInputCol("month")
.setOutputCol("month-idx")
val va = new VectorAssembler().setInputCols(Array("month-idx", "hash-tfidf"))
.setOutputCol("features")

如果有 30,000 个字的功能,这个月不会淹没吗?或者 VectorAssembler 是否足够智能来处理这个问题。 (如果可能的话,我如何获得该模型的最佳功能?)

最佳答案

VectorAssembler 只会将所有数据组合成一个向量,它不会对权重或其他任何内容执行任何操作。

由于 30,000 个词向量非常稀疏,因此更密集的特征(月份)很可能会对结果产生更大的影响,因此这些特征可能不会像您所说的那样被“淹没”。您可以训练模型并检查特征的权重来确认这一点。只需使用 LinearSVCModel 提供的 coefficients 方法即可查看特征对最终总和的影响程度:

val model = new LinearSVC().fit(trainingData)
val coeffs = model.coefficients

系数越高的特征对最终结果的影响越大。

如果赋予月份的权重太低/太高,可以使用 setWeightCol() 方法设置权重。

关于scala - 如何在 Spark 中正确地将数字特征与文本(词袋)结合起来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48135875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com