类 SVM


  • public class SVM
    extends StatModel
    支持向量机。参见:REF: ml_intro_svm
    • 构造函数详情

      • SVM

        protected SVM​(long addr)
    • 方法详情

      • __fromPtr__

        public static SVM __fromPtr__​(long addr)
      • getType

        public int getType()
        参见:setType
        返回值
        自动生成
      • setType

        public void setType​(int val)
        getType 参见:getType
        参数
        val - 自动生成
      • getGamma

        public double getGamma()
        参见:setGamma
        返回值
        自动生成
      • setGamma

        public void setGamma​(double val)
        getGamma 参见:getGamma
        参数
        val - 自动生成
      • getCoef0

        public double getCoef0()
        参见:setCoef0
        返回值
        自动生成
      • setCoef0

        public void setCoef0​(double val)
        getCoef0 参见:getCoef0
        参数
        val - 自动生成
      • getDegree

        public double getDegree()
        参见:setDegree
        返回值
        自动生成
      • setDegree

        public void setDegree​(double val)
        getDegree 参见:getDegree
        参数
        val - 自动生成
      • getC

        public double getC()
        参见:setC
        返回值
        自动生成
      • setC

        public void setC​(double val)
        getC 参见:getC
        参数
        val - 自动生成
      • getNu

        public double getNu()
        参见:setNu
        返回值
        自动生成
      • setNu

        public void setNu​(double val)
        getNu 参见:getNu
        参数
        val - 自动生成
      • getP

        public double getP()
        参见:setP
        返回值
        自动生成
      • setP

        public void setP​(double val)
        getP 参见:getP
        参数
        val - 自动生成
      • getClassWeights

        public Mat getClassWeights()
        参见:setClassWeights
        返回值
        自动生成
      • setClassWeights

        public void setClassWeights​(Mat val)
        getClassWeights 参见:getClassWeights
        参数
        val - 自动生成
      • getTermCriteria

        public TermCriteria getTermCriteria()
        参见:setTermCriteria
        返回值
        自动生成
      • setTermCriteria

        public void setTermCriteria​(TermCriteria val)
        getTermCriteria 参见:getTermCriteria
        参数
        val - 自动生成
      • getKernelType

        public int getKernelType()
        SVM 核的类型。参见 SVM::KernelTypes。默认值为 SVM::RBF。
        返回值
        自动生成
      • setKernel

        public void setKernel​(int kernelType)
        用预定义的内核之一初始化。参见 SVM::KernelTypes。
        参数
        kernelType - 自动生成
      • trainAuto

        public boolean trainAuto​(Mat samples,
                                 int layout,
                                 Mat responses,
                                 int kFold,
                                 ParamGrid Cgrid,
                                 ParamGrid gammaGrid,
                                 ParamGrid pGrid,
                                 ParamGrid nuGrid,
                                 ParamGrid coeffGrid,
                                 ParamGrid degreeGrid,
                                 boolean balanced)
        使用最佳参数训练 %SVM。
        参数
        samples - 训练样本
        layout - 参见 ml::SampleTypes。
        responses - 与训练样本相关的响应向量。
        kFold - 交叉验证参数。训练集被划分为 kFold 个子集。一个子集用于测试模型,其他子集构成训练集。因此,SVM 算法是
        Cgrid - C 的网格
        gammaGrid - gamma 的网格
        pGrid - p 的网格
        nuGrid - nu 的网格
        coeffGrid - coeff 的网格
        degreeGrid - degree 的网格
        balanced - 如果为真且问题是二类分类,则该方法创建更平衡的交叉验证子集,即子集中的类别比例接近于整个训练数据集中的比例。该方法通过选择最佳参数 C、gamma、p、nu、coef0、degree来自动训练 SVM 模型。当测试集误差的交叉验证估计值最小化时,参数被认为是最优的。此函数仅使用 SVM::getDefaultGrid 进行参数优化,因此仅提供基本的参数选项。此函数适用于分类 (SVM::C_SVC 或 SVM::NU_SVC) 和回归 (SVM::EPS_SVR 或 SVM::NU_SVR)。如果是 SVM::ONE_CLASS,则不进行优化,并执行带有 params 中指定参数的常规 SVM。
        返回值
        自动生成
      • trainAuto

        public boolean trainAuto​(Mat samples,
                                 int layout,
                                 Mat responses,
                                 int kFold,
                                 ParamGrid Cgrid,
                                 ParamGrid gammaGrid,
                                 ParamGrid pGrid,
                                 ParamGrid nuGrid,
                                 ParamGrid coeffGrid,
                                 ParamGrid degreeGrid)
        使用最佳参数训练 %SVM。
        参数
        samples - 训练样本
        layout - 参见 ml::SampleTypes。
        responses - 与训练样本相关的响应向量。
        kFold - 交叉验证参数。训练集被划分为 kFold 个子集。一个子集用于测试模型,其他子集构成训练集。因此,SVM 算法是
        Cgrid - C 的网格
        gammaGrid - gamma 的网格
        pGrid - p 的网格
        nuGrid - nu 的网格
        coeffGrid - coeff 的网格
        degreeGrid - degree 的网格,平衡的交叉验证子集,即子集中的类别比例接近于整个训练数据集中的比例。该方法通过选择最佳参数 C、gamma、p、nu、coef0、degree来自动训练 SVM 模型。当测试集误差的交叉验证估计值最小化时,参数被认为是最优的。此函数仅使用 SVM::getDefaultGrid 进行参数优化,因此仅提供基本的参数选项。此函数适用于分类 (SVM::C_SVC 或 SVM::NU_SVC) 和回归 (SVM::EPS_SVR 或 SVM::NU_SVR)。如果是 SVM::ONE_CLASS,则不进行优化,并执行带有 params 中指定参数的常规 SVM。
        返回值
        自动生成
      • trainAuto

        public boolean trainAuto​(Mat samples,
                                 int layout,
                                 Mat responses,
                                 int kFold,
                                 ParamGrid Cgrid,
                                 ParamGrid gammaGrid,
                                 ParamGrid pGrid,
                                 ParamGrid nuGrid,
                                 ParamGrid coeffGrid)
        使用最佳参数训练 %SVM。
        参数
        samples - 训练样本
        layout - 参见 ml::SampleTypes。
        responses - 与训练样本相关的响应向量。
        kFold - 交叉验证参数。训练集被划分为 kFold 个子集。一个子集用于测试模型,其他子集构成训练集。因此,SVM 算法是
        Cgrid - C 的网格
        gammaGrid - gamma 的网格
        pGrid - p 的网格
        nuGrid - nu 的网格
        coeffGrid - coeff 的网格,平衡的交叉验证子集,即子集中的类别比例接近于整个训练数据集中的比例。该方法通过选择最佳参数 C、gamma、p、nu、coef0、degree来自动训练 SVM 模型。当测试集误差的交叉验证估计值最小化时,参数被认为是最优的。此函数仅使用 SVM::getDefaultGrid 进行参数优化,因此仅提供基本的参数选项。此函数适用于分类 (SVM::C_SVC 或 SVM::NU_SVC) 和回归 (SVM::EPS_SVR 或 SVM::NU_SVR)。如果是 SVM::ONE_CLASS,则不进行优化,并执行带有 params 中指定参数的常规 SVM。
        返回值
        自动生成
      • trainAuto

        public boolean trainAuto​(Mat samples,
                                 int layout,
                                 Mat responses,
                                 int kFold,
                                 ParamGrid Cgrid,
                                 ParamGrid gammaGrid,
                                 ParamGrid pGrid,
                                 ParamGrid nuGrid)
        使用最佳参数训练 %SVM。
        参数
        samples - 训练样本
        layout - 参见 ml::SampleTypes。
        responses - 与训练样本相关的响应向量。
        kFold - 交叉验证参数。训练集被划分为 kFold 个子集。一个子集用于测试模型,其他子集构成训练集。因此,SVM 算法是
        Cgrid - C 的网格
        gammaGrid - gamma 的网格
        pGrid - p 的网格
        nuGrid - nu 的网格,平衡的交叉验证子集,即子集中的类别比例接近于整个训练数据集中的比例。该方法通过选择最佳参数 C、gamma、p、nu、coef0、degree来自动训练 SVM 模型。当测试集误差的交叉验证估计值最小化时,参数被认为是最优的。此函数仅使用 SVM::getDefaultGrid 进行参数优化,因此仅提供基本的参数选项。此函数适用于分类 (SVM::C_SVC 或 SVM::NU_SVC) 和回归 (SVM::EPS_SVR 或 SVM::NU_SVR)。如果是 SVM::ONE_CLASS,则不进行优化,并执行带有 params 中指定参数的常规 SVM。
        返回值
        自动生成
      • trainAuto

        public boolean trainAuto​(Mat samples,
                                 int layout,
                                 Mat responses,
                                 int kFold,
                                 ParamGrid Cgrid,
                                 ParamGrid gammaGrid,
                                 ParamGrid pGrid)
        使用最佳参数训练 %SVM。
        参数
        samples - 训练样本
        layout - 参见 ml::SampleTypes。
        responses - 与训练样本相关的响应向量。
        kFold - 交叉验证参数。训练集被划分为 kFold 个子集。一个子集用于测试模型,其他子集构成训练集。因此,SVM 算法是
        Cgrid - C 的网格
        gammaGrid - gamma 的网格
        pGrid - 用于p平衡交叉验证子集的网格,其中子集中的类别比例接近于整个训练数据集中的类别比例。该方法通过选择最佳参数C、gamma、p、nu、coef0、degree来自动训练%SVM模型。当测试集误差的交叉验证估计值最小化时,参数被认为是最佳的。此函数仅使用SVM::getDefaultGrid进行参数优化,因此仅提供基本的参数选项。此函数适用于分类(SVM::C_SVC或SVM::NU_SVC)以及回归(SVM::EPS_SVR或SVM::NU_SVR)。如果是SVM::ONE_CLASS,则不进行优化,并执行具有params中指定参数的常规%SVM。
        返回值
        自动生成
      • trainAuto

        public boolean trainAuto​(Mat samples,
                                 int layout,
                                 Mat responses,
                                 int kFold,
                                 ParamGrid Cgrid,
                                 ParamGrid gammaGrid)
        使用最佳参数训练 %SVM。
        参数
        samples - 训练样本
        layout - 参见 ml::SampleTypes。
        responses - 与训练样本相关的响应向量。
        kFold - 交叉验证参数。训练集被划分为 kFold 个子集。一个子集用于测试模型,其他子集构成训练集。因此,SVM 算法是
        Cgrid - C 的网格
        gammaGrid - 用于gamma平衡交叉验证子集的网格,其中子集中的类别比例接近于整个训练数据集中的类别比例。该方法通过选择最佳参数C、gamma、p、nu、coef0、degree来自动训练%SVM模型。当测试集误差的交叉验证估计值最小化时,参数被认为是最佳的。此函数仅使用SVM::getDefaultGrid进行参数优化,因此仅提供基本的参数选项。此函数适用于分类(SVM::C_SVC或SVM::NU_SVC)以及回归(SVM::EPS_SVR或SVM::NU_SVR)。如果是SVM::ONE_CLASS,则不进行优化,并执行具有params中指定参数的常规%SVM。
        返回值
        自动生成
      • trainAuto

        public boolean trainAuto​(Mat samples,
                                 int layout,
                                 Mat responses,
                                 int kFold,
                                 ParamGrid Cgrid)
        使用最佳参数训练 %SVM。
        参数
        samples - 训练样本
        layout - 参见 ml::SampleTypes。
        responses - 与训练样本相关的响应向量。
        kFold - 交叉验证参数。训练集被划分为 kFold 个子集。一个子集用于测试模型,其他子集构成训练集。因此,SVM 算法是
        Cgrid - 用于C平衡交叉验证子集的网格,其中子集中的类别比例接近于整个训练数据集中的类别比例。该方法通过选择最佳参数C、gamma、p、nu、coef0、degree来自动训练%SVM模型。当测试集误差的交叉验证估计值最小化时,参数被认为是最佳的。此函数仅使用SVM::getDefaultGrid进行参数优化,因此仅提供基本的参数选项。此函数适用于分类(SVM::C_SVC或SVM::NU_SVC)以及回归(SVM::EPS_SVR或SVM::NU_SVR)。如果是SVM::ONE_CLASS,则不进行优化,并执行具有params中指定参数的常规%SVM。
        返回值
        自动生成
      • trainAuto

        public boolean trainAuto​(Mat samples,
                                 int layout,
                                 Mat responses,
                                 int kFold)
        使用最佳参数训练 %SVM。
        参数
        samples - 训练样本
        layout - 参见 ml::SampleTypes。
        responses - 与训练样本相关的响应向量。
        kFold - 交叉验证参数。训练集被分成kFold个子集。一个子集用于测试模型,其他子集构成训练集。因此,%SVM算法是平衡交叉验证子集,子集中的类别比例接近于整个训练数据集中的类别比例。该方法通过选择最佳参数C、gamma、p、nu、coef0、degree来自动训练%SVM模型。当测试集误差的交叉验证估计值最小化时,参数被认为是最佳的。此函数仅使用SVM::getDefaultGrid进行参数优化,因此仅提供基本的参数选项。此函数适用于分类(SVM::C_SVC或SVM::NU_SVC)以及回归(SVM::EPS_SVR或SVM::NU_SVR)。如果是SVM::ONE_CLASS,则不进行优化,并执行具有params中指定参数的常规%SVM。
        返回值
        自动生成
      • trainAuto

        public boolean trainAuto​(Mat samples,
                                 int layout,
                                 Mat responses)
        使用最佳参数训练 %SVM。
        参数
        samples - 训练样本
        layout - 参见 ml::SampleTypes。
        responses - 与训练样本相关的响应向量。一个子集用于测试模型,其他子集构成训练集。因此,%SVM算法是平衡交叉验证子集,子集中的类别比例接近于整个训练数据集中的类别比例。该方法通过选择最佳参数C、gamma、p、nu、coef0、degree来自动训练%SVM模型。当测试集误差的交叉验证估计值最小化时,参数被认为是最佳的。此函数仅使用SVM::getDefaultGrid进行参数优化,因此仅提供基本的参数选项。此函数适用于分类(SVM::C_SVC或SVM::NU_SVC)以及回归(SVM::EPS_SVR或SVM::NU_SVR)。如果是SVM::ONE_CLASS,则不进行优化,并执行具有params中指定参数的常规%SVM。
        返回值
        自动生成
      • getSupportVectors

        public Mat getSupportVectors()
        检索所有支持向量。该方法将所有支持向量作为浮点矩阵返回,其中支持向量存储为矩阵行。
        返回值
        自动生成
      • getUncompressedSupportVectors

        public Mat getUncompressedSupportVectors()
        检索线性%SVM的所有未压缩支持向量。该方法返回线性%SVM的所有未压缩支持向量,压缩支持向量(用于预测)就是由此导出的。它们以浮点矩阵的形式返回,其中支持向量存储为矩阵行。
        返回值
        自动生成
      • getDecisionFunction

        public double getDecisionFunction​(int i,
                                          Mat alpha,
                                          Mat svidx)
        检索决策函数
        参数
        i - 决策函数的索引。如果解决的问题是回归、一类或二类分类,则只有一个决策函数,索引应始终为0。否则,在N类分类的情况下,将有\(N(N-1)/2\)个决策函数。
        alpha - 可选的输出向量,用于不同支持向量的权重。在线性%SVM的情况下,所有alpha都将为1。
        svidx - 支持向量矩阵中支持向量索引的可选输出向量(可以通过SVM::getSupportVectors检索)。在线性%SVM的情况下,每个决策函数都由单个“压缩”支持向量组成。该方法返回决策函数的rho参数,这是一个从核响应的加权和中减去的标量。
        返回值
        自动生成
      • getDefaultGridPtr

        public static ParamGrid getDefaultGridPtr​(int param_id)
        为 %SVM 参数生成网格。
        参数
        param_id - %SVM参数ID,必须是SVM::ParamTypes之一。网格是为具有此ID的参数生成的。该函数为指定的%SVM算法参数生成一个网格指针。该网格可以传递给函数SVM::trainAuto。
        返回值
        自动生成
      • create

        public static SVM create()
        创建空模型。使用StatModel::train训练模型。由于%SVM有多个参数,您可能希望找到适合您问题的最佳参数,可以使用SVM::trainAuto来完成。
        返回值
        自动生成
      • load

        public static SVM load​(java.lang.String filepath)
        从文件中加载并创建一个序列化的svm。使用SVM::save序列化并将SVM存储到磁盘。通过使用文件的路径调用此函数,再次从该文件加载SVM。
        参数
        filepath - 序列化svm的文件路径
        返回值
        自动生成
      • finalize

        protected void finalize()
                         throws java.lang.Throwable
        重写
        finalize 在类 StatModel
        抛出
        java.lang.Throwable