---
title: SVM
description: "- 模型接口"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2003/bds/kunpengbdssparkml_20_0026.html
sourcePath: /source/zh/kunpengboostkithistory/2003/bds/kunpengbdssparkml_20_0026.html
indexId: f42e315f2ef1e2c54b857ffd41de0cf1d2c7e87ba08617f61df55d4e30dd8d0073
---
# SVM

- 模型接口
  LinearSVC为ML Classification API。
| 模型接口类别 | 函数接口 |
| --- | --- |
| ML Classification API | def fit(dataset: Dataset[\_]): LinearSVCModel |
| ML Classification API | def fit(dataset: Dataset[\_], paramMap:ParamMap) : LinearSVCModel |
| ML Classification API | def fit(dataset: Dataset[\_], paramMaps: Array[ParamMap]) : LinearSVCModel |
| ML Classification API | 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

- 功能描述
  传入Dataset格式的样本数据，调用fit接口，输出LinearSVC分类模型。

- 输入输出

  1. 包名：package org.apache.spark.ml.classification
  2. 类名：LinearSVC
  3. 方法名：fit
  4. 输入：Dataset[_]，训练样本数据，必须字段如下。| Param name | Type(s) | Default | Description |
| --- | --- | --- | --- |
| labelCol | Double | "label" | 预测标签 |
| featuresCol | Vector | "features" | 特征标签 |


  5. 算法参数| 算法参数 |
| --- |
| 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 |


  6. 新增算法参数| 参数名称 | 参数含义 | 取值类型 |
| --- | --- | --- |
| 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

  7. 输出：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
```
