---
title: SVM
description: "- 模型接口。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengbds/appAccelFeatures/algorithmaccelf_ml/kunpengbdssparkml_16_0011.html
sourcePath: /source/zh/kunpengbds/appAccelFeatures/algorithmaccelf_ml/kunpengbdssparkml_16_0011.html
indexId: 5862847605f0a03a6de7fb2864af1b68ca25fae12bea5f13a70ea3966b9a164888
---
# 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接口的模型参数，说明如下。| 参数名称 | 取值类型 | 示例 | 描述 |
| --- | --- | --- | --- |
| 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[_]，训练样本数据，必须字段如下| 参数名称 | 取值类型 | 缺省值 | 描述 |
| --- | --- | --- | --- |
| labelCol | Double | label | 预测标签 |
| featuresCol | Vector | features | 特征标签 |


  5. 基于开源版本算法优化的参数
    1 2 3 4 5 6 7 8 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代码接口示例： 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 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分类模型，模型预测时的输出字段| 参数名称 | 取值类型 | 缺省值 | 描述 | 说明 |
| --- | --- | --- | --- | --- |
| prediction | Double | prediction | Predicted label | \- |
| label | Double | label | label | Classification only |
| features | Vector | features | features | Classification only |


- 使用样例
  fit(dataset: Dataset[_]): LinearSVCModel样例：

  1 2 3 4 5 6 7 8 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) }

- 结果样例
  1 svmx Accuracy = 0.999406629786391
