如何解决如何将 minDF 特征提取器 CountVectorizer 参数分别应用于每个标签,而不是整个数据集
我是 Apache Spark 的新手,遇到以下问题: 有一个数据集:
| label | words |
| -------- | ------------------- |
| 0 | word1 word2 word3 |
| 0 | word4 word1 word5 |
| 0 | word6 word7 word8 |
| 1 | word9 word10 |
| 1 | word9 word11 |
如果您将 CountVectorizer 与 setMinDF (0.5) 与此数据集一起使用,则词 word1 和 word9 将不要进入字典,因为它们每个都出现在数据集中不到 50% 的文档中。 如何将 minDF 分别应用到每个标签上以将 word1 和 word9 输入字典?
我当前的代码:
Dataset<Row> wordsData = <my dataset>;
CountVectorizer cv = new CountVectorizer().setInputCol("words").setoutputCol("features");
cv.setMinDF(0.5);
cvModel = cv.fit(wordsData);
cvModel.save(extractorModelFile); // SAVE MODEL
Dataset<Row> rescaledData = cvModel.transform(wordsData);
解决方法
如果您将 minDF
设置为 1.0
(其默认值),则所有单词都将在词汇表中。
val df = Seq(0 -> "word1 word2 word3",0 -> "word1 word2 word3",0 -> "word6 word7 word8",1 -> "word9 word10",1 -> "word9 word11")
.toDF("label","words").withColumn("words",split('words," "))
val cv = new CountVectorizer().setInputCol("words").setOutputCol("features").setMinDF(1d)
val model = cv.fit(df).transform(df)
model.vocabulary
res: Array[String] = Array(word9,word3,word2,word1,word11,word8,word7,word6,word10)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。