使用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)![在这里插入图片描述](https://img-blog.csdnimg.cn/20210630133136668.jpg#pic_center)
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
0
投稿
猜你喜欢
- Python是一门非常酷的语言,因为很少的Python代码可以在短时间内做很多事情,并且,Python很容易就能支持多任务和多重处理。py&
- 可以的,看看下面的代码和说明:<%sessionID = session.SessionIDtimeout&nbs
- 众所周知IE6不支持position:fixed,这个bug与IE6的双倍margin和不支持PNG透明等bug一样臭名昭著。前些天我做自己
- 一. 输出函数print在python中,print()是可以直接使用的输出函数,将数据输出到控制台上。1. print函数的使用1.1 可
- 概述基于Swoole的websocket服务,计划整合3篇进行技术整理,该服务主要有2个核心业务,用户消息服务(消息计数统计)和 客服IM消
- 对图片进行resize、裁剪、旋转、翻转图片处理时常用的手段有resize、裁剪、旋转、翻转,简单介绍一下python中怎么利用PIL库和t
- 目前用于Python的格式化程序(如autopep8和pep8ify)都用于删除代码中的lint错误。这有很明显的局限性。YAPF采用了不同
- class ascii{function decode($str){ preg_match_all( &
- 本文介绍了几种常用的python下载文件的方法,具体使用到了htttplib2,urllib等包,希望对大家有帮忙。1.简单文件下载使用ht
- 说明1. 使用google翻译服务获得翻译和语音;2. 使用mplayer播放获得的声音文件,因此,如果要播放语音,请确保PATH中能够找到
- 本文实例讲述了python实现根据窗口标题调用窗口的方法。分享给大家供大家参考。具体分析如下:当你知道一个windows窗口的标题后,可以用
- jQuery居然都没有JSON的decode和encode,精确类型判断也没有,囧……自己动手写吧!不过这些东西在网上都已经有很好的版本了,
- 1.请实现一个装饰器,把函数的返回值+100然后返回def wapper(func):def innner(*args,**kwargs):
- Python标准库的OS模块对操作系统的API进行了封装,并且使用统一的API访问不同操作系统的相同功能。OS模块包含与操作系统的系统环境、
- 如下所示:def is_img(ext): ext = ext.lower() if ext == '.jpg': &nbs
- 一、异常错误 a、语法错误错误一:if错误二:def text: &n
- 在默认情况下,MySQL搜索不区分大小写(但某些字符集始终区分大小写,如czech)。这意味着,如果你使用col_name LIKE
- 影响用户访问的最大部分是前端的页面。网站的划分一般为二:前端和后台。我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为
- 基本介绍环境: Python 3.5+, Pytorch 0.4.1/1.0.0安装:pip install pytorch-pretrai
- 其实,这是一个非常容易解决掉的问题。在我看来,似曾相识,呵呵,最近学JavaScript可是学会了使用var声明变量。其实,在PHP中根本不