类 SVM


  • public class SVM
    extends StatModel
    支持向量机。参见:参考文献: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 SEE: 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 - 如果为 true 且问题是二分类,则此方法创建更平衡的交叉验证子集,即子集中类别之间的比例与整个训练数据集中此类比例相近。此方法通过选择最优参数 C、gamma、p、nu、coef0、degree 自动训练 %SVM 模型。当测试集误差的交叉验证估计值最小时,参数被认为是最佳的。此函数仅使用 SVM::getDefaultGrid 进行参数优化,因此只提供基本的参数选项。此函数适用于分类(SVM::C_SVC 或 SVM::NU_SVC)以及回归(SVM::EPS_SVR 或 SVM::NU_SVR)。如果是 SVM::ONE_CLASS,则不进行优化,并执行使用指定参数的常规 %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,则不进行优化,并执行使用指定参数的常规 %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,则不进行优化,并执行使用指定参数的常规 %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,则不进行优化,并执行使用指定参数的常规 %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,则不进行优化,并执行使用指定参数的常规 %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,则不进行优化,并执行使用指定参数的常规 %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,则不进行优化,并执行使用指定参数的常规 %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,则不进行优化,并执行使用指定参数的常规 %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,则不进行优化,并执行使用指定参数的常规 %SVM。
        返回
        自动生成
      • getSupportVectors

        public Mat getSupportVectors()
        检索所有支持向量。此方法以浮点矩阵的形式返回所有支持向量,其中支持向量存储为矩阵行。
        返回
        自动生成
      • getUncompressedSupportVectors

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

        public double getDecisionFunction​(int i,
                                          Mat alpha,
                                          Mat svidx)
        检索决策函数
        参数
        i - 决策函数的索引。如果解决的问题是回归、1 类或 2 类分类,则只有一个决策函数,索引应始终为 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