- 签证留学 |
- 笔译 |
- 口译
- 求职 |
- 日/韩语 |
- 德语
(1)收集数据:提供的文本文件。
(2)准备数据:基于二值图像构造向量。
(3)分析数据:对图像向量进行目测。
(4)训练算法:采用两种不同的核函数,并对径向基核函数采用不同的设置来运行SMO算法。
(5)测试算法:编写一个函数来测试不同的核函数并计算错误率。
(6)使用算法:一个图像识别的完整应用还需要一些图像处理的知识,这里并不打算深入介绍。
使用其它一些代码和SMO算法,可以构建一个系统去测试手写数字上的分类器。打开svmMLiA.py并将img2vector()函数复制过来。然后,加入程序清单1中的代码。
程序清单1基于SVM的手写数字识别
函数loadImages()是作为前面kNN.py中的handwritingClassTest()的一部分出现的。它已经被重构为自身的一个函数。其中仅有的一个大区别在于,在kNN.py中代码直接应用类别标签,而同支持向量机一起使用时,类别标签为一1或者+1。因此,一旦碰到数字9,则输出类别标签-1,否则输出+1。本质上,支持向量机是一个二类分类器,其分类结果不是+1就是-1。基于SVM构建多类分类器已有很多研究和对比了,如果读者感兴趣,建议阅读C.W.Huset等人发表的一篇论文“A Comparison of Methods for Multiclass Support Vector Machines”。由于这里我们只做二类分类,因此除了1和9之外的数字都被去掉了。