Python图像处理(15):SVM分类器
来源:互联网 发布:java代码编写经验 编辑:程序博客网 时间:2024/05/17 15:59
快乐虾
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')
类似这样的数据:
在得到训练数据后,接着创建一个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()
看看最后的结果:
最后,通过svm. getSupportVectors获取支持向量。
# 支持向量vec = svm.getSupportVectors()print(vec)
0 0
- Python图像处理(15):SVM分类器
- Python图像处理(12):贝叶斯分类器
- Python图像处理(14):神经网络分类器
- 图像的线性分类器(感知机、SVM、Softmax)
- opencv中的SVM图像分类(一)
- opencv中的SVM图像分类(二)
- opencv中的SVM图像分类(一)
- opencv中的SVM图像分类(二)
- SVM分类器-LS-SVM(二)
- HOG + SVM 进行图片分类(python)
- HOG+SVM进行图像分类
- 基于SVM的图像分类
- opencv中的SVM图像分类
- SVM分类器(一)
- 图像车牌识别-SVM分类器的构建(字符识别部分)
- SVM+HOG对图像进行分类(MATLAB实现)
- 【opencv、机器学习】opencv中的SVM图像分类(一)
- 【opencv、机器学习】opencv中的SVM图像分类(二)
- Android 中 View 的中的 DrawableState
- mysql悲观锁总结和实践for update
- 常用特殊符号的HTML代码(HTML字符实体)
- 使用HTTP请求协议之Post与Get方法的区别
- TA们是这样描述"睿哥"的
- Python图像处理(15):SVM分类器
- 返回值为对象调用拷贝构造函数
- 经典排序算法
- LeetCode216:Combination Sum III
- Codeforces Round #290 (Div. 2) C. Fox And Names 拓扑排序
- 命令模式,状态模式和职责链模式的不同
- 【bzoj2510】弱题 概率dp+循环矩阵矩阵乘法
- STL之nth_element()(取容器中的第n大值)
- Android 进阶学习:Android LayoutInflater原理分析,带你一步步深入了解View(一)