快乐虾

http://blog.csdn.net/lights_joy/

欢迎转载,但请保留作者信息

在opencv中支持SVM分类器。本文尝试在python中调用它。

和前面的贝叶斯分类器一样,SVM也遵循先训练再使用的方式。我们直接在贝叶斯分类器的測试代码上做简单改动。完毕两类数据点的分类。

首先也是先创建训练用的数据。须要注意的是这里的train_label必须是整数类型,而不是float:

# 训练的点数
train_pts = 30 # 创建測试的数据点,2类
# 以(-1.5, -1.5)为中心
rand1 = np.ones((train_pts,2)) * (-2) + np.random.rand(train_pts, 2)
print('rand1:')
print(rand1) # 以(1.5, 1.5)为中心
rand2 = np.ones((train_pts,2)) + np.random.rand(train_pts, 2)
print('rand2:')
print(rand2) # 合并随机点,得到训练数据
train_data = np.vstack((rand1, rand2))
train_data = np.array(train_data, dtype='float32')
train_label = np.vstack( (np.zeros((train_pts,1), dtype='int32'), np.ones((train_pts,1), dtype='int32'))) # 显示训练数据
plt.figure(1)
plt.plot(rand1[:,0], rand1[:,1], 'o')
plt.plot(rand2[:,0], rand2[:,1], 'o')
plt.plot(rand2[:,0], rand2[:,1], 'o')

相似这种数据:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

在得到训练数据后,接着创建一个SVM分类器并配置训练參数:

# 创建分类器
svm = cv2.ml.SVM_create()
svm.setType(cv2.ml.SVM_C_SVC) # SVM类型
svm.setKernel(cv2.ml.SVM_LINEAR) # 使用线性核
svm.setC(1.0)

接着我们对此分类器进行训练:

# 训练
ret = svm.train(train_data, cv2.ml.ROW_SAMPLE, train_label)

在训练完毕后就能够使用測试数据进行预測了:

# 測试数据。20个点[-2,2]
pt = np.array(np.random.rand(20,2) * 4 - 2, dtype='float32')
(ret, res) = svm.predict(pt)
print("res = ")
print(res)

predict通过res返回得到一个20x1的数组。每一行相应一个输入点。计算得到的值就是分类的序号,在这里是0和1,我们取0.5为阈值进行分类并显示结果:

# 按label进行分类显示
plt.figure(2)
res = np.hstack((res, res)) # 第一类
type_data = pt[res < 0.5]
type_data = np.reshape(type_data, (type_data.shape[0] / 2, 2))
plt.plot(type_data[:,0], type_data[:,1], 'o') # 第二类
type_data = pt[res >= 0.5]
type_data = np.reshape(type_data, (type_data.shape[0] / 2, 2))
plt.plot(type_data[:,0], type_data[:,1], 'o') plt.show()

看看最后的结果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />

最后。通过svm. getSupportVectors获取支持向量。

# 支持向量
vec = svm.getSupportVectors()
print(vec)



Python图像处理(15):SVM分类器的更多相关文章

  1. 菜鸟之路——机器学习之SVM分类器学习理解以及Python实现

    SVM分类器里面的东西好多呀,碾压前两个.怪不得称之为深度学习出现之前表现最好的算法. 今天学到的也应该只是冰山一角,懂了SVM的一些原理.还得继续深入学习理解呢. 一些关键词: 超平面(hyper ...

  2. 机器学习经典算法详解及Python实现--基于SMO的SVM分类器

    原文:http://blog.csdn.net/suipingsp/article/details/41645779 支持向量机基本上是最好的有监督学习算法,因其英文名为support vector  ...

  3. Python 图像处理 OpenCV (15):图像轮廓

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...

  4. 入门系列之Scikit-learn在Python中构建机器学习分类器

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由信姜缘 发表于云+社区专栏 介绍 机器学习是计算机科学.人工智能和统计学的研究领域.机器学习的重点是训练算法以学习模式并根据数据进行预 ...

  5. Python图像处理库(1)

    转自:http://www.ituring.com.cn/tupubarticle/2024 第 1 章 基本的图像操作和处理 本章讲解操作和处理图像的基础知识,将通过大量示例介绍处理图像所需的 Py ...

  6. python图像处理:一福变五福

    快过年了,各种互联网产品都出来撒红包.某宝一年一度的“集五福活动”更是成为每年的必备活动之一. 虽然到最后每人大概也就分个两块钱,但作为一个全民话题,大多数人还是愿意凑凑热闹. 毕竟对于如今生活在大城 ...

  7. Python 图像处理 OpenCV (16):图像直方图

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...

  8. 跟我学Python图像处理丨基于灰度三维图的图像顶帽运算和黑帽运算

    摘要:本篇文章结合灰度三维图像讲解图像顶帽运算和图像黑猫运算,通过Python调用OpenCV函数实现. 本文分享自华为云社区<[Python图像处理] 十三.基于灰度三维图的图像顶帽运算和黑帽 ...

  9. Python图像处理库:Pillow 初级教程

    Python图像处理库:Pillow 初级教程 2014-09-14 翻译 http://pillow.readthedocs.org/en/latest/handbook/tutorial.html ...

随机推荐

  1. BZOJ3881 Coci2015 Divljak fail树+差分

    题目大意,给出两个字符串集合S和T,向T中添加字符串,查询S_i在T中有几个字符串出现过.一看这种多字符串匹配问题,我们联想到了AC自动机,做法就是,对于S集合我们建立一个AC自动机,建出fail树, ...

  2. sort大法好———自定义的注意事项!!!!!!

    众所周知,在c++中,sort是一个非常好用的排序函数,方便使用.可自定义的特性,让众多oier如我不能自拔.但是在自定义时也有一些大坑需要注意(敲黑板),下面就是oi入门的第不知道多少课,大家认真听 ...

  3. 字符约束条件的SQL注入攻击

    引言 目前值得高兴的是,开发者在建立网站时,已经开始关注安全问题了——几乎每个开发者都知道SQL注入漏洞了.在本文中,我将为读者介绍另一种与SQL数据库相关的漏洞,虽然它的危害性与SQL注入不相上下, ...

  4. [ZHOJ1131]Find K Min

    题目大意: 给你一个数列,求其中第K大的数. 思路: 类似于快速排序的思想,每次可以确定出当前的的x在数组中的位置. 然后根据位置选择该往左找还是往右找. #pragma GCC optimize(3 ...

  5. hihocoder 1523:数组重排2

    题目链接 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给定一个1-N的排列A1, A2, ... AN,每次操作小Hi可以选择一个数,把它放到数组的最左边. 请计算小 ...

  6. Delphi TFileStream 打开模式与共享模式

    { TFileStream create mode } fmCreate = $FF00; { Create a file with the given name. If a file with th ...

  7. How to run WPF – XBAP as Full Trust Application

    Recently I work on WPF-XBAP application that will run from intranet website: This application must h ...

  8. java 调用shell命令

    原文:http://kongcodecenter.iteye.com/blog/1231177 Java通过SSH2协议执行远程Shell脚本(ganymed-ssh2-build210.jar)   ...

  9. cocos2d-x v3.0新特性及使用

    八月份cocos2d-x官网发布了v3.0版本,这次更新的内容特别多,包括2dx的架构以及使用 总得来说,给开发者带来了很大的便利: 运行环境需求: Android 2.3 or newer iOS ...

  10. tyvj 2075 借教室 题解

    P2075 [NOIP2012T5]借教室 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 noip2012-tg 描述 在大学期间,经常需要租借教室.大到院 ...