2024年5月31日发(作者:尹合)
基于SVM模式识别系统的设计与实现
1.1 主要研究内容
(1)现有的手写识别系统普遍采用k近邻分类器,在2000个数字中,每
个数字大约有200个样本,但实际使用这个算法时,算法的执行效率并不高,因
为算法需要为每个测试向量做2000次距离计算,每个距离计算包括了1024个维
度浮点运算,总计要执行900次,此外需要保留所有的训练样本,还需要为测试
向量准备2MB的存储空间。因此我们要做的是在其性能不变的同时,使用更少
的内存。所以考虑使用支持向量机来代替kNN方法,对于支持向量机而言,其
需要保留的样本少了很多,因为结果只是保留了支持向量的那些点,但是能获得
更快更满意的效果。
(2)系统流程图
step1. 收集数据(提供数字图片)
step2. 处理数据(将带有数字的图片二值化)
step3. 基于二值图像构造向量
step4. 训练算法采用径向基核函数运行SMO算法
step5. 测试算法(编写函数测试不同参数)
1.2 题目研究的工作基础或实验条件
(1)荣耀MagicBook笔记本
(2)Linux ubuntu 18.6操作系统pycharm 2021 python3
1.3 数据集描述
数据集为trainingDigits和testDigits,trainingDigits包含了大约2000个数字
图片,每个数字图片有200个样本;testDigits包含了大约900个测试数据。
1.4 特征提取过程描述
将数字图片进行二值化特征提取,为了使用SVM分类器,必须将图像格
式化处理为一个向量,将把32×32的二进制图像转换为1×1024的向量,使得
SVM可以处理图像信息。得到处理后的图片如图所示:
图1 二值化后的图片
编写函数img2vector,将图像转换为向量:该函数创建1x1024的NumPy 数组,
然后打开给定的文件,循环读出文件的前32行,并将每行的头32个字符值存储
在 NumPy数组中,最后返回数组,代码如图2所示:
图2 处理数组
1.5 分类过程描述
1.5.1 寻找最大间隔
寻找最大间隔,就要找到一个点到分割超平面的距离,就必须要算出点到分
隔面的法线或垂线的长度。用数学表达则是:
w
T
Ab/w
,向量
w
和常数
b
一
起描述了所给数据的分隔线或超平面。
1.5.2 分类器的优化问题
当计算数据点到分隔面的距离并确定分隔面的放置位置时,间隔是通过label
* (w
T
x+b)
1
来计算,如果数据点处于正方向(即+1类) 并且离分隔超平面很远
的位置时,(w
T
x+b)会是一个很大的正数,同时label *(w
T
x+b)也会是一个很大的
正数。而如果数据点处于负方向(-1类)并且离分隔超平面很远的位置时, 此
时由于类别标签为-1,则label * (w
T
x+b)仍然是一个很大的正数。
任务目标:找出分类器中的w和b;找出具有最小间隔的数据点(支持向量);
2024年5月31日发(作者:尹合)
基于SVM模式识别系统的设计与实现
1.1 主要研究内容
(1)现有的手写识别系统普遍采用k近邻分类器,在2000个数字中,每
个数字大约有200个样本,但实际使用这个算法时,算法的执行效率并不高,因
为算法需要为每个测试向量做2000次距离计算,每个距离计算包括了1024个维
度浮点运算,总计要执行900次,此外需要保留所有的训练样本,还需要为测试
向量准备2MB的存储空间。因此我们要做的是在其性能不变的同时,使用更少
的内存。所以考虑使用支持向量机来代替kNN方法,对于支持向量机而言,其
需要保留的样本少了很多,因为结果只是保留了支持向量的那些点,但是能获得
更快更满意的效果。
(2)系统流程图
step1. 收集数据(提供数字图片)
step2. 处理数据(将带有数字的图片二值化)
step3. 基于二值图像构造向量
step4. 训练算法采用径向基核函数运行SMO算法
step5. 测试算法(编写函数测试不同参数)
1.2 题目研究的工作基础或实验条件
(1)荣耀MagicBook笔记本
(2)Linux ubuntu 18.6操作系统pycharm 2021 python3
1.3 数据集描述
数据集为trainingDigits和testDigits,trainingDigits包含了大约2000个数字
图片,每个数字图片有200个样本;testDigits包含了大约900个测试数据。
1.4 特征提取过程描述
将数字图片进行二值化特征提取,为了使用SVM分类器,必须将图像格
式化处理为一个向量,将把32×32的二进制图像转换为1×1024的向量,使得
SVM可以处理图像信息。得到处理后的图片如图所示:
图1 二值化后的图片
编写函数img2vector,将图像转换为向量:该函数创建1x1024的NumPy 数组,
然后打开给定的文件,循环读出文件的前32行,并将每行的头32个字符值存储
在 NumPy数组中,最后返回数组,代码如图2所示:
图2 处理数组
1.5 分类过程描述
1.5.1 寻找最大间隔
寻找最大间隔,就要找到一个点到分割超平面的距离,就必须要算出点到分
隔面的法线或垂线的长度。用数学表达则是:
w
T
Ab/w
,向量
w
和常数
b
一
起描述了所给数据的分隔线或超平面。
1.5.2 分类器的优化问题
当计算数据点到分隔面的距离并确定分隔面的放置位置时,间隔是通过label
* (w
T
x+b)
1
来计算,如果数据点处于正方向(即+1类) 并且离分隔超平面很远
的位置时,(w
T
x+b)会是一个很大的正数,同时label *(w
T
x+b)也会是一个很大的
正数。而如果数据点处于负方向(-1类)并且离分隔超平面很远的位置时, 此
时由于类别标签为-1,则label * (w
T
x+b)仍然是一个很大的正数。
任务目标:找出分类器中的w和b;找出具有最小间隔的数据点(支持向量);