使用python svm实现直接可用的手写数字识别
作者:翟羽嚄 发布时间:2023-06-09 13:57:19
标签:python,svm,手写数字识别
python svm实现手写数字识别——直接可用
最近在做个围棋识别的项目,需要识别下面的数字,如下图:
我发现现在网上很多代码是良莠不齐,…真是一言难尽,于是记录一下,能够运行成功并识别成功的一个源码。
1、训练
1.1、训练数据集下载——已转化成csv文件
下载地址
1.2 、训练源码
train.py
import pandas as pd
from sklearn.decomposition import PCA
from sklearn import svm
from sklearn.externals import joblib
import time
if __name__ =="__main__":
train_num = 5000
test_num = 7000
data = pd.read_csv('train.csv')
train_data = data.values[0:train_num,1:]
train_label = data.values[0:train_num,0]
test_data = data.values[train_num:test_num,1:]
test_label = data.values[train_num:test_num,0]
t = time.time()
#PCA降维
pca = PCA(n_components=0.8, whiten=True)
print('start pca...')
train_x = pca.fit_transform(train_data)
test_x = pca.transform(test_data)
print(train_x.shape)
# svm训练
print('start svc...')
svc = svm.SVC(kernel = 'rbf', C = 10)
svc.fit(train_x,train_label)
pre = svc.predict(test_x)
#保存模型
joblib.dump(svc, 'model.m')
joblib.dump(pca, 'pca.m')
# 计算准确率
score = svc.score(test_x, test_label)
print(u'准确率:%f,花费时间:%.2fs' % (score, time.time() - t))
2、预测单张图片
2.1、待预测图像
2.2、预测源码
from sklearn.externals import joblib
import cv2
if __name__ =="__main__":
img = cv2.imread("img_temp.jpg", 0)
#test = img.reshape(1,1444)
Tp_x = 10
Tp_y = 10
Tp_width = 20
Tp_height = 20
img_temp = img[Tp_y:Tp_y + Tp_height, Tp_x:Tp_x + Tp_width] # 参数含义分别是:y、y+h、x、x+w
cv2.namedWindow("src", 0)
cv2.imshow("src", img_temp)
cv2.waitKey(1000)
[height, width] = img_temp.shape
print(width, height)
res_img = cv2.resize(img_temp, (28, 28))
test = res_img.reshape(1, 784)
#加载模型
svc = joblib.load("model.m")
pca = joblib.load("pca.m")
# svm
print('start pca...')
test_x = pca.transform(test)
print(test_x.shape)
pre = svc.predict(test_x)
print(pre[0])
2.3、预测结果
来源:https://blog.csdn.net/mao_hui_fei/article/details/118358036


猜你喜欢
- 1.实现效果2.实现原理echarts官网:series-lines注意:流动特效只支持非平滑曲线(smooth:false)series-
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&
- 本文实例讲述了JS简单随机数生成方法。分享给大家供大家参考,具体如下:<!doctype html><html>&l
- 一、pyc文件我们开发一个python脚本,文件的后缀为.py。如果运行这个py文件,Python内部会先将源码文件(.py文件)编译成字节
- <?php/** * 网站地图更新控制器 * * &nbs
- 1、余弦相似度余弦相似度衡量的是2个向量间的夹角大小,通过夹角的余弦值表示结果,因此2个向量的余弦相似度为:余弦相似度的取值为[-1,1],
- 参考网址 https://www.jb51.net/article/29551.htmSELECT [StartDate] FROM [db
- 在 Python 中,列表是一种非常常见且强大的数据类型。但有时候,我们需要从一个列表中删除特定元素,尤其是当这个元素出现多次时。本文将介绍
- 最近有同学询问如何利用Python处理xml文件,特此整理一个比较简洁的操作手册,供大家参阅。首先准备一个xml文件,xml中的内容如下所示
- 目录分页后添加删除功能实现模态框编辑内容完整代码笔记利用layui框架实现分页:layui实现完整表格分页:自己实现分页:# name: m
- 需要转载的小伙伴转载后请注明转载的地址需要用到的库from bs4 import BeautifulSoupimport requestsi
- SQLserver 2000中出现“指定的服务并未以已安装的服务存在" 解决方案一、将计算机名改成大写。二、将sql server
- 直接参考以下实例,采用协程访问三个网站由于IO操作非常耗时,程序经常会处于等待状态比如请求多个网页有时候需要等待,gevent可以自动切换协
- asyncio的关键字说明event_loop事件循环:程序开启一个无限循环,把一些函数注册到事件循环上,当满足事件发生的时候,调用相应的协
- 下面是我整理的监控sql server数据库,在性能测试过程中是否出现死锁、堵塞的SQL语句,还算比较准备,留下来备用。调用方法:选中相应的
- 一 前言知识追寻者又要放大招了,学完这篇openpyxl第三方库,读者将会懂得如何灵活的读取excel数据,如何创建excel工作表;更新工
- 1. 对于数组array乘就是对应位置的元素相乘:X1 = np.array([[1,2], [3, 4]])X2 = X1print X2
- 一、 操作数据库(mysql)的工具1.1命令行工具1.2navicat界面化工具1.3phpAdmin界面化工具一般情况下安装phpstu
- 天猫将商品加入购物车会有一个抛物线动画,告诉用户操作成功以及购物车的位置,业务中需要用到类似的效果,记录一下实现过程备忘,先上demo&nb
- 项目中使用的日志库是使用python官方库logging封装的,但是居然一直么有设置日志自动滚动,经常会受到告警说哪台机器磁盘空间又满,清理