基于libsvm的手写字体识别.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于libsvm的手写字体识别

测试数据掠影: ? ? 为了叙说方便,现做如下简称 《MATLAB 神经网络30个案例分析》:30cases 《MATLAB统计分析与应用:40个案例分析》:40cases 《MATLAB高效编程技巧与应用:25个案例分析》:25cases 现用libsvm来实现手写字体识别,测试图片用的亦是25cases和40cases中的那手写字体的训练样本和测试样本。主体程序思想为25cases中的代码过程,改进之处为利用libsvm加强工具箱利用GA(或者gridsearch)来实现参数寻优,采用的核函数为RBF核函数。O(∩_∩)O~ 最终测试集合的分类效果是: Accuracy = 93.3333% (28/30) (classification) 即只有两个被错分 Rocwoods测试集合的效果是90%(27/30) 即只有三个被错分 谢老师测试集合的效果是93.3333% (28/30) (classification) 即只有两个被错分 由于训练集和测试集数目都比较小,以上的结果都是可以接受的。 我尝试调整参数将准确率再提高一些,最终作罢,估计在前期的图片预处理上下功夫,才能达到完全的测试集识别。O(∩_∩)O~ ? ?? ? 附: MATLAB自带的svm实现函数与libsvm差别小议: 1 MATLAB自带的svm实现函数仅有的模型是C-SVC(C-support vector classification); 而libsvm工具箱有C-SVC(C-support vector classification),nu-SVC(nu-support vector classification),one-class SVM(distribution estimation),epsilon-SVR(epsilon-support vector regression),nu-SVR(nu-support vector regression)等多种模型可供使用。 2 MATLAB自带的svm实现函数仅支持分类问题,不支持回归问题;而libsvm不仅支持分类问题,亦支持回归问题。 3 MATLAB自带的svm实现函数仅支持二分类问题,多分类问题需按照多分类的相应算法编程实现;而libsvm采用1v1算法支持多分类。 4 MATLAB自带的svm实现函数采用RBF核函数时无法调节核函数的参数gamma,貌似仅能用默认的;而libsvm可以进行该参数的调节。 5 libsvm中的二次规划问题的解决算法是SMO;而MATLAB自带的svm实现函数中二次规划问题的解法有三种可以选择:经典二次方法;SMO;最小二乘。(这个是我目前发现的MATLAB自带的svm实现函数唯一的优点~) ? ?? ?? ?在以上的一些对比下,我个人建议目前svm的实现还是使用libsvm(这个应该是目前最好用的svm工具箱),当然MATLAB自带的svm实现函数对于简单问题也可使用,MATLAB自带的svm实现函数可能会在更加新的版本里面进行完善,我也曾尝试用MATLAB自带的svm实现函数来进行重新封装实现libsvm中的所有功能但工作量有些大~ 测试代码: function CharacterRecognitionLibsvm % Character Recognition based on libsvm % by faruto % Email:patrick.lee@? % QQ:516667408? % /faruto? % last modified 2010.11.05 % % www.mfun.la %%? tic; close all; clear; clc; format compact; %% 载入训练数据 [FileName,PathName,FilterIndex] = uigetfile( ... ? ? {*.jpg;*.bmp},请导入训练图片,*.jpg,MultiSelect,on); if ~FilterIndex ? ? return; end num_train = length(FileName); TrainData = zeros(num_train,16*16); TrainLabel = zeros(num_train,1); for k = 1:num_train ? ? pic = imread([PathName,FileName{k}]); ? ? pic = pic_preprocess(pic); ? ?? ? ? TrainData(k,:) = double(pic(:)); ? ? TrainLabel(k) = str2double(FileName{k}(4)); end %% 建

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档