美文网首页
07 hog特征&SVM支持向量机的定义

07 hog特征&SVM支持向量机的定义

作者: 犬夜叉写作业 | 来源:发表于2019-07-30 20:59 被阅读0次

    SVM支持向量机的本质:是个分类器,使用任意多条直线进行分类(对于三维就是平面),寻求最优的分类平面


    image.png

    男生女生身高体重,训练,预测:

    
    import cv2
    import numpy as np
    import matplotlib.pyplot as plt
    #1 准备data
    rand1 = np.array([[155,48],[159,50],[164,53],[168,56],[172,60]])    #女生数据
    rand2 = np.array([[152,53],[156,55],[160,56],[172,64],[176,65]])     #男生数据
    
    # 2 label   准备一个标签
    label = np.array([[0],[0],[0],[0],[0],[1],[1],[1],[1],[1]])
    
    # 3 data  对数据进行处理
    data = np.vstack((rand1,rand2))  #将rand1,rand2进行合并
    data = np.array(data,dtype='float32')   #转换为数组
    
    # svm 所有的数据都要有label,标签用于描述数据当前的属性
    # [155,48] -- 0 女生 [152,53] ---1  男生
    # 监督学习        0 负样本 1 正样本
    
    # 4 训练和预测
    
    svm = cv2.ml.SVM_create() # ml : 机器学习模块 ;SVM_create() 完当前SVM向量机的创建
    
    # 设置SVM的各种属性
    svm.setType(cv2.ml.SVM_C_SVC) # 设置svm 类型
    svm.setKernel(cv2.ml.SVM_LINEAR) #设置为使用 线性(line)内核,因为使用的是线性分类器
    svm.setC(0.01)
    
    # 开始进行 训练
    result = svm.train(data,cv2.ml.ROW_SAMPLE,label)  #(数据,类型,标签)
    
    # 预测
    pt_data = np.vstack([[167,55],[162,57]]) #0 女生 1男生
    pt_data = np.array(pt_data,dtype='float32')   #完成数据转换
    print(pt_data)
    
    (par1,par2) = svm.predict(pt_data)  #开始预测,传入要预测的数据
    print(par2)
    
    image.png

    需要注意的地方:
    1、svm的本质:分类器
    2、寻求一个最优的超平面,用超平面来完成分类
    3、SVM的核:可以有多钟,上面用的是线性核
    4、准备数据(训练样本):一定要包含正样本和负样本;正样本与负样本的个数不一定相同;准备样本的时候,一定要准备一个样本标签,标签能唯一描述当前的数据
    5、这是一个监督学习的过程,用0跟1来监督他0表示女生,1表示男生
    6、数据准备好之后就可以进行训练:先创建SVM;设置一下内核,并表面其属性;进行训练;进行预测
    7、找相关书籍了解具体算法推到过程

    相关文章

      网友评论

          本文标题:07 hog特征&SVM支持向量机的定义

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