SVM
- 模型接口
LinearSVC为ML Classification API。
模型接口类别
函数接口
ML Classification API
def fit(dataset: Dataset[_]): LinearSVCModel
def fit(dataset: Dataset[_], paramMap:ParamMap) : LinearSVCModel
def fit(dataset: Dataset[_], paramMaps: Array[ParamMap]) : LinearSVCModel
def fit(dataset: Dataset[_], firstParamPair: ParamPair[_], otherParamPairs: ParamPair[_]* ) :LinearSVCModel
- 输入:paramMap、paramMaps、firstParamPair、otherParamPairs,fit接口的模型参数,说明如下。
Param name
Type(s)
Example
Description
paramMap
ParamMap
ParamMap(A.c > b)
将b的值赋给模型A的参数c
paramMaps
Array[ParamMap]
Array[ParamMap ](n)
形成n个ParamMap模型参数列表
firstParamPair
ParamPair
ParamPair(A.c, b)
将b的值赋给模型A的参数c
otherParamPairs
ParamPair
ParamPair(A.e, f)
将f的值赋给模型A的参数e
ML Classification API
- 功能描述
- 输入输出
- 包名:package org.apache.spark.ml.classification
- 类名:LinearSVC
- 方法名:fit
- 输入:Dataset[_],训练样本数据,必须字段如下。
Param name
Type(s)
Default
Description
labelCol
Double
"label"
预测标签
featuresCol
Vector
"features"
特征标签
- 算法参数
算法参数
def setRegParam(value: Double): this.type
def setMaxIter(value: Int): this.type
def setFitIntercept(value: Boolean): this.type
def setTol(value: Double): this.type
def setStandardization(value: Boolean): this.type
def setWeightCol(value: String): this.type
def setThreshold(value: Double): this.type
def setAggregationDepth(value: Int): this.type
- 新增算法参数
参数名称
参数含义
取值类型
inertiaCoefficient
历史方向信息在动量计算中的权重
正实数[Double]
参数及fit代码接口示例:
import org.apache.spark.ml.param.{ParamMap, ParamPair} val svm = new LinearSVC() //定义def fit(dataset: Dataset[_], paramMap: ParamMap) 接口参数 val paramMap = ParamMap(svm.regParam -> regParam) .put(svm.maxIter, numIterations) // 定义def fit(dataset: Dataset[_], paramMaps: Array[ParamMap]): 接口参数 val paramMaps: Array[ParamMap] = new Array[ParamMap](2) for (i <- 0 to 2) { paramMaps(i) = ParamMap(svm.regParam -> regParam(i)) .put(svm.maxIter, numIterations) } //对paramMaps进行赋值 // 定义def fit(dataset: Dataset[_], firstParamPair: ParamPair[_], otherParamPairs: ParamPair[_]*) 接口参数 val defaultParamPair = ParamPair(svm.regParam, regParam) val regParamPair = ParamPair(svm.regParam, regParam) val maxIterParamPair = ParamPair(svm.maxIter, numIterations) // 调用各个fit接口 model = svm.fit(trainingData) //返回GBTRegressionModel model = svm.fit(trainingData, paramMap) //返回GBTRegressionModel models = svm.fit(trainingData, paramMaps) //返回Seq[GBTRegressionModel] model = svm.fit(trainingData, defaultParamPair, regParamPair, maxIterParamPair) //返回 SVMRegressionModel
- 输出:LinearSVCModel,LinearSVC分类模型,模型预测时的输出字段。
Param name
Type(s)
Default
Description
Notes
prediction
Double
"prediction"
Predicted label
-
label
Double
" label "
label
Classificatio n only
features
Vector
" features "
features
Classificatio n only
- 使用样例
fit(dataset: Dataset[_]): LinearSVCModel样例:
test("train"){ val svc = new LinearSVC().setMaxIter(100).setRegParam(0.1) svc.setIc(0.1) val msvc = svc.fit(sdf) val res = msvc.transform(sdf) val accuracy = res.filter($"label"===$"prediction").count().toDouble/res.count println("svmx Accuracy = "+accuracy) }
- 结果样例
svmx Accuracy = 0.999406629786391