美文网首页
使用SVM模块分类

使用SVM模块分类

作者: 大龙10 | 来源:发表于2024-01-09 15:27 被阅读0次

    书名:计算机视觉40例从入门到深度学习:OpenCV-Python
    作者:李立宗
    出版社:电子工业出版社
    出版时间:2022-07-01
    ISBN:9787121436857


    第15章 机器学习导读

    15.4 OpenCV机器学习模块的使用

    15.4.2 使用SVM模块分类

    1、三个步骤

    • 如图15-40所示,按照在OpenCV中使用机器学习模块的三步使用SVM模块即可。


      图15-40 使用SVM模块的流程示意图

    2、每步使用的函数。

    • Step 1:模型初始化。
      在使用SVM模块时,需要先使用函数cv2.ml.SVM_create()生成用于后续训练的空分类器模型。

    • Step 2:训练分类器。
      获取空分类器svm后,针对该模型使用svm.train()函数对训练数据进行训练,其语法格式为


    • 其中,各参数含义如下:
      ● 训练数据:用于训练的数据,用来训练分类器。
      ● 训练数据排列形式:训练数据的排列形式有按行排列(cv2.ml.ROW_SAMPLE,每一条训练数据占一行)和按列排列(cv2.ml.COL_SAMPLE,每一条训练数据占一列)两种形式,根据数据的实际排列情况选择对应的参数即可。
      ● 训练数据的标签:训练数据对应的标签。
      ● 训练结果:训练结果的返回值。例如,用于训练的数据为data,其对应的标签为label,每一条数据按行排列,对分类器模型svm进行训练,使用的语句为


    • Step 3:使用模型。
      完成对分类器的训练后,使用svm.predict()函数即可使用训练好的分类器模型对待分类的数据进行分类,其语法格式为


    • 以上是SVM模块的基本使用方法。
      在实际使用中,可能会根据需要对其中的参数进行调整。
      OpenCV支持对多个参数的自定义,
      例如,可以通过setType()函数设置类别,通过setKernel()函数设置卷积核类型,
      通过setC()函数设置SVM的参数C(惩罚系数,即对误差的宽容度,默认值为0),
      通过setGamma()函数设置卷积核的系数。

    3、实例

    • 【例15.2】使用SVM模块完成钻石分类预测
      根据钻石的质量和直径将其划分为甲、乙两个等级,如图15-41左侧表格所示。现有一枚钻石的指标为(12,18),希望利用SVM模块确定其等级,如图15-41右侧图形所示。


      图15-41 钻石数据

      观察图15-41很容易判断出未知标签为“甲”。下面根据题目要求,编写程序使用SVM模块进行判断。

    4、程序

    # -*- coding: utf-8 -*-
    """
    Created on Wed Jan 10 15:22:10 2024
    
    @author: dalong10
    """
    
    import cv2
    import numpy as np
    
    # =====生成模拟数据及标签====
    trainData = np.array([[6,3] ,[4,5],[9,8],[12,12],[15,13],[18,17]]).astype(np.float32) 
    tdLable = np.array([[0],[0],[0],[1],[1],[1]]).astype(np.int32)
    test=np.array([[12,18]]).astype(np.float32)
    
    # =======使用SVM算法===============
    svm = cv2.ml.SVM_create()
    svm.train(trainData, cv2.ml.ROW_SAMPLE, tdLable)
    (p1,p2) = svm.predict(test)
    
    # ========泉示结果============
    rv = p2[0][0].astype(np.int32)
    if rv==0:
        print("当前钻石等级:乙级")
    else:
        print("当前钻石等级: 甲级")
    
    运行结果
    • 上述程序输出结果与由图15-41判断结果一致,较好地实现了预测。

    相关文章

      网友评论

          本文标题:使用SVM模块分类

          本文链接:https://www.haomeiwen.com/subject/ynwnndtx.html