OpenCV_机器学习-Hog特征+SVM(支持向量机)完成数据识别

'''
opencv_机器学习-Hog特征+SVM(支持向量机)完成识别
1.什么是SVM
本质是分类器,寻找一个最优的超平面完成分类
可以使用若干条直线,也可以使用若干条曲线完成分类
SVM的核是 line
'''
import cv2
import numpy as np
import matplotlib.pyplot as pit
#准备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]])#男生数据
#准备label标签
label = np.array([[0],[0],[0],[0],[0],[1],[1],[1],[1],[1]])
#准备训练数据
data = np.vstack((rand1,rand2))#将两组数据加合在一块
data = np.array(data,dtype='float32')#
#在进行SVM训练时,所有的数据必须要有标签,标签是描述当前一组数据唯一的属性
#example:[155,48]->标签0 女生,[152,53]->标签1 男生
#监督学习
#标签0是负样本即rand1是负样本数据,标签1是正样本数据即rand2是正样本数据
#训练和预测
#完成SVM支持向量机的创建,ml描述的是机器学习模块(machine learning),SVM_create方法完成当前支持向量机的创建
svm = cv2.ml.SVM_create()
#属性设置
svm.setType(cv2.ml.SVM_C_SVC)#设置SVM的类型type
svm.setKernel(cv2.ml.SVM_LINEAR)#设置SVM的线性分类器,这一行最重要
svm.setC(0.01)
#训练
result = svm.train(data,cv2.ml.ROW_SAMPLE,label)
#完成数据的预测
pt_data = np.vstack([[167,55],[162,57]])#第一组数据label标签是0,表明是女生,第二组数据标签是1,表明是男生
pt_data = np.array(pt_data,dtype = 'float32')
print(pt_data)
#预测
(par1,par2) = svm.predict(pt_data)
print(par2)

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yhwang-hub

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值