Spark MLlib机器学习开发指南(6)--特征提取--Co

作者: xcrossed | 来源:发表于2017-10-23 22:05 被阅读1143次

    Spark MLlib机器学习开发指南(6)--特征提取,转换,选择--CountVectorizer

    翻译自CountVectorizer,基于最新2.2.0版本翻译,转载注明出处 xcrossed 机器学习

    CountVectorizer

    CountVectorizer和CountVectorizerModel的目标是帮助将一个文档集合转换成一个包含token计数的向量当没有预先的字典可用时。CountVectorizer可用作估计器来提取词汇表,生成CountVectorizerModel。该模型为文档中的文档生成稀疏的词汇表示形式,然后将这些文档传递给LDA等其他算法。

    在拟合过程中,CountVectorizer将在语料库中选择由词频排序最高的词汇。一个可选的参数minDF也通过指定一个词汇必须出现在词汇表中的最小值(或小于1.0)来影响拟合过程。另一个可选的二进制切换参数控制输出向量。如果设置为真,所有非零计数都设置为1。这对于离散的概率模型来说尤其有用,模型是二进制的,而不是整数的。

    Examples
    假定我们有一个列名为id和texts的DataFrame

     id | texts
    ----|----------
     0  | Array("a", "b", "c")
     1  | Array("a", "b", "b", "c", "a")
    

    每行在texts列中表示的是一个Array[String]类型的文档,调用CountVectorizer的fit()方法能产生一个包含词汇表(a, b, c)的CountVectorizerModel.转换后包含一个vector的输出列

     id | texts                           | vector
    ----|---------------------------------|---------------
     0  | Array("a", "b", "c")            | (3,[0,1,2],[1.0,1.0,1.0])
     1  | Array("a", "b", "b", "c", "a")  | (3,[0,1,2],[2.0,2.0,1.0])
    

    每个向量表示该文档在词汇表上的出现计数。

    详细API参考CountVectorizer Scala docsCountVectorizerModel Scala docs

    import org.apache.spark.ml.feature.{CountVectorizer, CountVectorizerModel}
    
    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")
    
    cvModel.transform(df).show(false)
    

    完整示例代码在spark代码仓库"examples/src/main/scala/org/apache/spark/examples/ml/CountVectorizerExample.scala"

    相关文章

      网友评论

        本文标题:Spark MLlib机器学习开发指南(6)--特征提取--Co

        本文链接:https://www.haomeiwen.com/subject/gujzuxtx.html