SVM手写数字识别
来源:互联网 发布:淘宝烈焰游戏关闭了 编辑:程序博客网 时间:2024/04/29 02:18
1. 流程
- 收集数据:此处使用给定的文本文件
- 准备数据:基于二值图像构造数据
- 分析数据:对图像向量进行目测
- 训练算法:采用三种不同的方法,不同的参数
- 线性分类器
- 二次多项式核函数
- 径向基核函数
- 测试并计算错误率
2. 实验
本实验使用的训练数据如下图所示,为若干个手写的 0 和 9 的数字图像。
本实验使用的测试数据如下图所示,为若干个手写的 0 和 9 的数字图像。
实验的主函数如下所示:
% 功能:演示 Kernel SVM算法% 时间:2015-07-13clcclear allclose alladdpath('./data');%% 测试样本dataLength = 2;[xTrain1, yTrain1, xTrain2, yTrain2] = readDataFromFiles('./data/trainingDigits');[xTest1, yTest1, xTest2, yTest2] = readDataFromFiles('./data/testDigits');% 合并样本X = [xTrain1, xTrain2]; Y = [yTrain1, yTrain2]; % 打乱样本顺序index = randperm(size(X, 2));X(:, index) = X;Y(:, index) = Y;%% Kernel SVM 训练kernelType = 'liner';[alpha, b] = kernelSvmTrainMine(X, Y, kernelType);%% 提取 SVepsilon = 1e-5; indexSV = find(alpha > epsilon);%% 测试输出yTestResult1 = sign(sum(bsxfun(@times, alpha(indexSV) .* Y(indexSV)', kernel(X(:, indexSV), xTest1, kernelType))) + b);yTestResult2 = sign(sum(bsxfun(@times, alpha(indexSV) .* Y(indexSV)', kernel(X(:, indexSV), xTest2, kernelType))) + b);sum(yTestResult1 ~= yTest1)sum(yTestResult2 ~= yTest2)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
训练数据和测试数据的个数为:
线性分类器的结果如下所示:
二次多项式核函数的结果如下所示,其中的系数是指
径向基核函数的结果如下所示,其中的系数是指
3. 总结
从上面的测试中可以看出:
1. 参数的不同对分类的效果影响很大
2. 并不是说最小的训练错误率对应于最小的支持向量数目。
3. 训练后的识别阶段并不需要所有训练样本,只需要支持向量
4. 线性核函数的训练效果并不糟糕,在某些情况下如果线性核函数就以满足要求就可不使用其他复杂核函数。
4. 完整代码和数据
我的GitHub
5. 参考
SVM 支持向量机
Dual SVM 对偶支持向量机
Kernel SVM
0 0
- SVM - 手写数字识别
- SVM手写数字识别
- SVM用于手写数字识别
- pca+svm手写数字识别
- 基于SVM手写数字识别
- 手写数字识别hebb和SVM
- SVM和Knn实现手写数字识别
- SVM手写数字的识别---python
- 【机器学习 sklearn】手写数字识别 SVM
- SVM学习笔记(二)----手写数字识别
- 基于opencv的手写数字识别(MFC,HOG,SVM)
- SVM手写字符识别
- 手写数字识别(二)----SVM 实现Mnist-image 手写数字图像识别
- SVM 手写数字检测
- 手写数字识别实验
- 手写数字识别
- 识别手写数字
- CNN 手写数字识别
- CompletionService使用
- InnoDB Monitor
- Spring @Order Annotation
- PNG格式小图标的CSS任意颜色赋色技术
- Oracle 创建普通用户,并赋予权限
- SVM手写数字识别
- 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法!
- Codeforces Round #386(Div. 2)B. Decoding【模拟】
- 计算机视觉——卡尔曼滤波
- Java设置session超时(失效)的三种方式
- ZooKeeper的基本概念
- java设计模式学习笔记之装饰模式
- Javascript中的apply和call继承
- SVM对图片的分类 搬家