鲲鹏社区首页
中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助

IDF

IDF算法,提供了DF MLlib API、IDF MLlib API、IDF MLlib RDD-based API三套接口。

模型接口类别

函数接口

DF MLlib API

def compute(sc: SparkContext, params: DFParams): RDD[String]

IDF MLlib API

def fit(dataset: Dataset[_]): IDFModel

def fit(dataset: Dataset[_], paramMaps: Array[ParamMap]): Seq[IDFModel]

def fit(dataset: Dataset[_], paramMap: ParamMap): IDFModel

def fit(dataset: Dataset[_], firstParamPair: ParamPair[_], otherParamPairs: ParamPair[_]*): IDFModel

IDF MLlib RDD-based API

def fit(dataset: RDD[Vector]): IDFModel

def fit(dataset: JavaRDD[Vector]): IDFModel

DF MLlib API

  • 功能描述

    传入文本数据的路径,设置算法参数,调用compute接口,返回结果。

  • 输入输出
    1. 包名package org.apache.spark.ml.feature
    2. 类名:DF
    3. 方法名:compute
    4. 输入:DFParams对象,参数描述如下表

      参数名称

      取值类型

      描述

      dataPath

      String,缺省值为空串

      文本数据的路径

      splitMinSizeMB

      Long,缺省值为1024

      map任务数据分片大小的下限值

      splitMaxSizeMB

      Long,缺省值为2048

      map任务数据分片大小的上限值

      splitLocations

      Long,缺省值为401

      map任务数据分片的最大位置数

      langFile

      String,缺省值为“languages.csv”

      语种启用的配置文件名

      globalMerge

      Boolean,缺省值为False

      是否开启DF值的全局合并

      outputSeparator

      String,缺省值为“\t”

      输出结果中的分隔符

    5. 算法参数

      参数名称

      取值类型

      描述

      sc

      SparkContext对象

      Spark上下文环境

      params

      DFParams对象

      算法详细集合

      参数及fit代码接口示例:

      1
      2
      3
      4
      5
      6
      import org.apache.spark.ml.feature.DFParams
      import org.apache.spark.ml.feature.DF
      ......
      val params = new DFParams(dataPath, splitMinSizeMB, splitMaxSizeMB, splitLocations, langFile, globalMerge)
      val res = DF.compute(sc, params)
      res.collect().foreach(println)
      
    6. 输出:RDD[String],包含全部词语的文档频率
  • 使用样例
    1
    2
    3
    4
    5
    6
    import org.apache.spark.ml.feature.DFParams
    import org.apache.spark.ml.feature.DF
    ......
    val params = new DFParams(dataPath, splitMinSizeMB, splitMaxSizeMB, splitLocations, langFile, globalMerge)
    val res = DF.compute(sc, params)
    res.collect().foreach(println)
    
  • 样例结果
    1
    2
    hello_en 1
    world_en 2
    

IDF MLlib API

  • 功能描述

    传入文本数据的路径,设置算法参数,调用compute接口,返回结果。

  • 输入输出
    1. 包名package org.apache.spark.ml.feature
    2. 类名:IDF
    3. 方法名:fit
    4. 输入:Dataset[_],文档数据,必须字段如下

      参数名称

      取值类型

      描述

      inputCol

      Vector

      TF词频数据的字段名

    5. 基于原生算法优化的参数

      def setInputCol(value: String): IDF.this.type

      def setMinDocFreq(value: Int): IDF.this.type

      def setOutputCol(value: String): IDF.this.type

    6. 新增算法参数

      参数名称

      取值类型

      描述

      spark conf参数名

      combineStrategy

      String,取值范围:default或auto,缺省值为auto。

      数据聚合策略

      spark.boostkit.ml.idf.combineStrategy

      fetchMethod

      String,取值范围:collect或reduce或fold,缺省值为collect。

      结果获取方法

      spark.boostkit.ml.idf.fetchMethod

      参数及fit代码接口示例:

      1
      2
      3
      4
      5
      6
      7
      8
      9
      import org.apache.spark.ml.Pipeline
      import org.apache.spark.ml.evaluation.RegressionEvaluator
      import org.apache.spark.ml.feature.VectorIndexer
      import org.apache.spark.ml.regression.DecisionTreeRegressionModel
      import org.apache.spark.ml.regression.DecisionTreeRegressor
      val idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")
      val idfModel = idf.fit(featurizedData)
      val rescaledData = idfModel.transform(featurizedData)
      rescaledData.select("label", "features").show()
      
    7. 输出:IDFModel,IDF模型,模型推理时的输出字段如下

      参数名称

      取值类型

      描述

      outputCol

      Vector

      IDFTF相乘得到TF-IDF值的字段名

  • 使用样例
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import org.apache.spark.ml.Pipeline
    import org.apache.spark.ml.evaluation.RegressionEvaluator
    import org.apache.spark.ml.feature.VectorIndexer
    import org.apache.spark.ml.regression.DecisionTreeRegressionModel
    import org.apache.spark.ml.regression.DecisionTreeRegressor
    val idf = new IDF().setInputCol("rawFeatures").setOutputCol("features")
    val idfModel = idf.fit(featurizedData)
    val rescaledData = idfModel.transform(featurizedData)
    rescaledData.select("label", "features").show()
    
  • 样例结果
    1
    2
    3
    4
    5
    +----------+-----+--------------------+
    |label | features             |  
    +----------+-----+--------------------+
    |  1|(1000,[0,1,2,3,4,...|
    +----------+-----+--------------------+
    

IDF MLlib RDD-based API

  • 功能描述

    传入RDD格式的文本数据,调用训练接口,输出IDF模型。

  • 输入输出
    1. 包名package org.apache.spark.mllib.feature
    2. 类名:IDF
    3. 方法名:fit
    4. 输入:RDD[Vector],训练文本数据。
    5. 基于原生算法优化的参数

      minDocFreq,词语必须出现的最小文档数量。

    6. 新增算法参数

      参数名称

      取值类型

      描述

      spark conf参数名

      combineStrategy

      String,取值范围:default或auto,缺省值为auto

      数据聚合策略

      spark.boostkit.ml.idf.combineStrategy

      fetchMethod

      String,取值范围:collect或reduce或fold,缺省值为collect

      结果获取方法

      spark.boostkit.ml.idf.fetchMethod

      参数及fit代码接口示例:

      1
      2
      3
      4
      5
      val idf = new IDF().fit(tf)
      val tfidf: RDD[Vector] = idf.transform(tf)
      val idfIgnore = new IDF(minDocFreq = 2).fit(tf)
      val tfidfIgnore: RDD[Vector] = idfIgnore.transform(tf)
      println(tfidfIgnore.first)
      
    7. 输出:RDD[String],包含全部词语的文档频率
  • 使用样例
    1
    2
    3
    4
    5
    val idf = new IDF().fit(tf)
    val tfidf: RDD[Vector] = idf.transform(tf)
    val idfIgnore = new IDF(minDocFreq = 2).fit(tf)
    val tfidfIgnore: RDD[Vector] = idfIgnore.transform(tf)
    println(tfidfIgnore.first)
    
  • 样例结果
    1
    (1000,[0,1,2,3,4,...