python识别手写数字knn_手写数字识别以及Python sklearn KNN实现
Background: 每个手写数字的图,对应于一张高*宽为28*28像素的图片,形成一个28*28pixel的矩阵,写成一维的1*784pixel的矩阵。每个像素有与之对应的像素值,为0~255之间的整数,表示该像素的亮暗,值越大像素越暗。每个像素值对应于一个特征,Digit recognizer 通过学习这个矩阵的特征来对数字进行分类。
【label 对应手写的数字,pixel0~pixel783为该数字的1*784pixel矩阵】文件格式csv
1.数据可视化。看看编号40的数字是什么~
2.分析原始数据。可见这是一个类别平衡的多分类问题。
3.检查数据,数据完整。
4.数据归一化处理
注意不同的算法对数据有不同的要求。
5.分类算法
这里以简单易懂的KNN为例,先选择合适的K值,以及为了避免过拟合,进行模型评估。
6.参数选择,模型评估——k折交叉验证法
Python sklearn.model_selection提供了
不同于k-fold的是,stratified采用分层采样。
def cross_validation(K,X,y):
knn=neighbors.KNeighborsClassifier(K,weights='distance')
score=cross_val_score(knn,X,y,cv=5,scoring='accuracy')
return np.array(score).mean()
接着对不同K值模型进行循环选择最优。
for K in k_range:
k_score.append(cross_validation(K,X,y))
最后得到最优k==3,再用全部数据训练模型,精度0.969。
7. PCA主成分分析进行特征降维,去除噪声。
def decomposition(n,matrice):
pca=PCA(n_components=n)
pca.fit(matrice)
matrice_pca=np.array(pca.transform(matrice))
return matrice_pca,sum(pca.explained_variance_ratio_)
n_score=[]
n_vr=[]
n_array=[5,10,15,20,25,50,100,200,500]
for n in n_array:
train_X,vr=decomposition(n,X)
n_score.append(cross_validation(3,train_X,y))
n_vr.append(vr)
plt.plot(n_array,n_score,'r',label='Accuracy')
plt.plot(n_array,n_vr,'g',label='Variance ratio')
plt.legend(loc='center',fontsize='large')
plt.xlabel('n_components',size=15)
#plt.xscale("log")
plt.show
将特征维度降至20的时候,保留大部分信息(Variance ratio),训练精度开始趋于饱和。
选n_components为60,精度提升到0.974。使用支持向量机,精度提升到0.982。
ps:CNN能达到0.99以上的精度。
python识别手写数字knn_手写数字识别以及Python sklearn KNN实现相关推荐
- 基于TensorFlow深度学习框架,运用python搭建LeNet-5卷积神经网络模型和mnist手写数字识别数据集,设计一个手写数字识别软件。
本软件是基于TensorFlow深度学习框架,运用LeNet-5卷积神经网络模型和mnist手写数字识别数据集所设计的手写数字识别软件. 具体实现如下: 1.读入数据:运用TensorFlow深度学习 ...
- 基于python的手写数字识别实验报告_联机手写数字识别实验报告
1 联机手写数字识别设计 一.设计论述 模式识别是六十年代初迅速发展起来的一门学科. 由于它研究的是如何用机 器来实现人 ( 及某些动物 ) 对事物的学习. 识别和判断能力, 因而受到了很多科技 领域 ...
- python做神经网络识别车牌_Python与人工神经网络:使用神经网络识别手写图像介绍...
人体的视觉系统是一个相当神奇的存在,对于下面的一串手写图像,可以毫不费力的识别出他们是504192,轻松到让人都忘记了其实这是一个复杂的工作. 实际上在我们的大脑的左脑和右脑的皮层都有一个第一视觉区域 ...
- 手写字体识别用python实现_利用贝叶斯算法实现手写体识别(Python)
#!/usr/bin/python#-*- coding: utf-8 -*-##########################################Bayes : 用来描述两个条件概率之 ...
- Python与人工神经网络(2)——使用神经网络识别手写图像
人体的视觉系统是一个相当神奇的存在,对于下面的一串手写图像,可以毫不费力的识别出他们是504192,轻松到让人都忘记了其实这是一个复杂的工作. 实际上在我们的大脑的左脑和右脑的皮层都有一个第一视觉区域 ...
- python实现手写笔迹,手写识别,语音识别,语音生成
文章目录 1,先说思路 2,实现截图 3,祭出源代码 1,先说思路 1,应该实现对于手写笔迹的记录,生成字迹截图 1.1怎么实现呢?在定点和移动中的鼠标所在处画一条线,鼠标按住移动的话,线也会跟着移动 ...
- 人工智能入门第一课:手写字体识别及可视化项目(手写画板)(mnist)
人工智能入门第一课:手写字体识别及可视化项目(手写画板)(mnist),使用技术(Django+js+tensorflow+html+bootstrap+inspinia框架) 直接上图,项目效果 1 ...
- wpf 切换搜狗输入法英文_搜狗输入法全新升级手写功能,中英数字自由写,告别切换丨本周新闻...
搜狗AI合成主播雅妮 为您带来搜狗本周新闻播报 新 闻 原 文 .01. 2019搜狗全年营收超80亿人民币,创历史新高 近期,搜狗公布了2019年第四季度及全年未经审计的财务报告.财报显示,2019 ...
- 手写识别ocr java,怎么识别手写文字?迅捷OCR文字识别软件帮你快速完成!
怎么识别手写文字?虽然现在手机.平板等设备已经普及开来,但是从小在学校养成的习惯,还是让大部分人选择会手写的方式.手写其实也有很大的缺陷,无论是在生活中还是在网络上进行分享都比较困难. 那么有没有将手 ...
- 手写识别字体的步骤是什么?怎么识别图片中的文字?
手写识别字体的步骤是什么?怎么识别图片中的文字? 1. 打开信风工具网,点击拍照按钮,选择拍图识字模式,对准需要识别的文件进行拍摄。在线工具地址: https://ocr.bytedance.zj.c ...
最新文章
- selenium - webdriver常用方法
- SQL Server数据库锁的类型、用法及注意事项详解
- 7-48 银行排队问题之单窗口“夹塞”版 (30 分)(思路和详解+map做法)来呀Baby!
- 尝试Office 2003 VSTO的开发、部署
- 用jquery写一个属于自己的音乐播放器
- Java使用继承的语法是,Java基础语法八 继承
- 比尔·盖茨退出微软董事会,回顾盖茨与微软的传奇故事
- 无线网络 设置网关和服务器,我家的网络连接的IP是 192.168.1.223 我想问网关是多少 服务器是...
- java中怎么实现大小写转换(利用阿斯克码)
- 日常一记(11)--word公式输入任意矩阵
- ALSA之Codec注册过程
- 在DW中制作网页中的表单
- 微信公众号关注自动回复得到小程序链接
- java 新浪短链接_新浪t.cn短链接如何生成?网址缩短api接口分享
- 爬虫 | Python爬取20000+猫眼影评实战
- python re 查找字符串中是否含有汉字
- tensorflow 版本列表_tensorflow各个版本的CUDA以及Cudnn版本对应关系
- linux操作系统下 c语言编程入门
- 让自己的QQ个人头像Tip也有彩色背景(转)
- java process 乱码_Java常见乱码原理及解决方案
热门文章
- 电视android怎么连接手机助手下载,投屏助手app下载 投屏助手(手机投屏到电视) for Android v2.0 安卓版 下载-脚本之家...
- matlab 运动控制系统设计与实现,电力传动控制系统:运动控制系统
- 快速傅里叶变换(蝶形算法)
- 网站开发的需求分析报告
- 计算机文化基础(高职高专版 第十一版)第六章 答案
- ecshop批量打印快递单
- 博客前端模板源码(力荐)
- 《微软System Center 2012 R2私有云部署实战》——第二章 微软私有云选型2.1 服务器选型...
- 实战Flash游戏开发
- Java 将Excel转为et和ett格式