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

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

  • 功能描述

    传入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