计算机视觉基础系列(python与opencv的操作与运用/tensorflow的基础介绍)(二十二)---SVM支持向量机

SVM的本质是寻求一个最优的超平面进行分类,比较简单的分类就是一个直线,很简单,若是多维空间的话就是超平面了,运用的核是线性核。样本准备一般是至少有正样本和负样本两种情况,还要label标签。运用机器学习模块进行创建训练,最后调用预测模块进行预测。下面我们运用学生的身高核体重进行SVM的分类预测。

其中0代表女生,1代表男生。

# SVM的本质:寻求一个最优的超平面进行分类
# SVM核:线性核
# 身高体重,训练,预测
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, 66]])
# 2 label标签准备
label = np.array([[0], [0], [0], [0], [0], [1], [1], [1], [1], [1]])
# 3data处理
data = np.vstack((rand1, rand2))                 # 数据进行合并
data = np.array(data, dtype='float32')
# 所有的数据必须要有标签
# [155,48]---0女生   [152, 53]----1 男生
# 监督学习:监督学习就是每训练一次通过数据进行矫正
# 4 训练
svm = cv2.ml.SVM_create()                        # ml 代表机器学习模块,SVM_crete()创建
# 属性设置
svm.setType(cv2.ml.SVM_C_SVC)                    # SVM的type
svm.setKernel(cv2.ml.SVM_LINEAR)                 # 线性分类器
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(par1, par2)

输出的结果为:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值