使用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、待预测图像

使用python svm实现直接可用的手写数字识别

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、预测结果

使用python svm实现直接可用的手写数字识别

来源:https://blog.csdn.net/mao_hui_fei/article/details/118358036

标签:python,svm,手写数字识别
0
投稿

猜你喜欢

  • python爬虫的数据库连接问题【推荐】

    2024-01-19 18:26:41
  • javascript基本包装类型介绍

    2024-05-05 09:05:09
  • 详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库

    2024-01-24 03:27:04
  • 比较文档位置

    2008-04-03 13:24:00
  • golang cache带索引超时缓存库实战示例

    2023-07-24 04:43:11
  • 深入php内核之php in array

    2024-05-13 09:23:55
  • python 执行文件时额外参数获取的实例

    2022-09-24 05:46:54
  • mysql 8.0.14 安装配置方法图文教程

    2024-01-22 10:28:08
  • python使用js2py库运行js代码

    2022-09-06 17:06:55
  • python微信跳一跳系列之棋子定位颜色识别

    2023-01-16 04:52:49
  • mysql 通配符(sql 高级过滤)

    2024-01-24 17:15:39
  • 用VB编写ActiveX DLL实现ASP编程

    2008-10-21 21:28:00
  • 如何优化JavaScript脚本的性能

    2008-02-19 21:47:00
  • asp中判断服务器是否安装了某种组件的函数

    2011-02-16 10:53:00
  • 在keras中实现查看其训练loss值

    2021-03-05 05:29:44
  • python实现字符串和字典的转换

    2023-03-02 02:57:18
  • Python中的基本数据类型介绍

    2023-07-21 22:26:26
  • Vue+express+Socket实现聊天功能

    2024-06-05 09:19:03
  • python使用requests实现发送带文件请求功能

    2023-11-03 14:23:13
  • 解决SQL Server的“此数据库没有有效所有者”问题

    2011-12-14 18:29:35
  • asp之家 网络编程 m.aspxhome.com