【发布时间】:2017-06-18 02:42:07
【问题描述】:
我正在尝试访问似乎被锁定在模型对象返回的向量中的值。我在这里和那里看到了一些关于旧/新 Vector 类型的帖子,但这并没有帮助我弄清楚我缺少什么。
来自 CountVectorizer 模型的代码设置了问题。似乎与 org.apache.spark.ml.linalg.VectorUDT 有关,但我不确定。我已经被这个屏蔽到有点尴尬的地步了。
有人可以提供一个代码示例,说明如何解析 features 向量的 3 个元素中的每一个:词汇计数、术语 ID 列表、术语计数列表?
import org.apache.spark.ml.feature.{CountVectorizer, CountVectorizerModel}
sc.version
res1: String = 2.1.1
val df = spark.createDataFrame(Seq(
(0, Array("a", "b", "c")),
(1, Array("a", "b", "b", "c", "a"))
)).toDF("id", "words")
// fit a CountVectorizerModel from the corpus
val cvModel: CountVectorizerModel = (new CountVectorizer()
.setInputCol("words")
.setOutputCol("features")
.setVocabSize(3)
.setMinDF(2)
.fit(df)
)
// alternatively, define CountVectorizerModel with a-priori vocabulary
val cvm = (new CountVectorizerModel(Array("a", "b", "c"))
.setInputCol("words")
.setOutputCol("features")
)
val df_vectorized = cvModel.transform(df)
df_vectorized.show(false)
+---+---------------+-------------------------+
|id |words |features |
+---+---------------+-------------------------+
|0 |[a, b, c] |(3,[0,1,2],[1.0,1.0,1.0])|
|1 |[a, b, b, c, a]|(3,[0,1,2],[2.0,2.0,1.0])|
+---+---------------+-------------------------+
【问题讨论】:
-
请分享您尝试并成功解决问题的方法!
-
@eliasah,感谢您的反馈。我尝试了很多东西。我宁愿不要用我所有失败的尝试来混淆这个问题。我觉得解决方案是微不足道的,我只是没有看到它。希望有人可以帮助我。
标签: scala apache-spark apache-spark-mllib