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 |
- 输入输出
- 包名:package org.apache.spark.ml.feature
- 类名:DF
- 方法名:compute
- 输入: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”
输出结果中的分隔符
- 算法参数
参数名称
取值类型
描述
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)
- 输出: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
- 输入输出
- 包名:package org.apache.spark.ml.feature
- 类名:IDF
- 方法名:fit
- 输入:Dataset[_],文档数据,必须字段如下
参数名称
取值类型
描述
inputCol
Vector
TF词频数据的字段名
- 基于原生算法优化的参数
def setInputCol(value: String): IDF.this.type
def setMinDocFreq(value: Int): IDF.this.type
def setOutputCol(value: String): IDF.this.type
- 新增算法参数
参数名称
取值类型
描述
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()
- 输出:IDFModel,IDF模型,模型推理时的输出字段如下
参数名称
取值类型
描述
outputCol
Vector
IDF与TF相乘得到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,...| +----------+-----+--------------------+
- 输入输出
- 包名:package org.apache.spark.mllib.feature
- 类名:IDF
- 方法名:fit
- 输入:RDD[Vector],训练文本数据。
- 基于原生算法优化的参数
- 新增算法参数
参数名称
取值类型
描述
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)
- 输出: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,...