KNN手写数字识别
- import numpy as np
- import matplotlib .pyplot as plt
- from sklearn.neighbors import KNeighborsClassifier
读取样本数据,图片
样本数据的提取
- 特征:每一张图片对应的numpy数组
- 目标:0,1,2,3,4,5,6,7,8,9
- feature = []
- target = []
- for i in range(10):#i:0-9表示的是文件夹的名称
- for j in range(1,501):#j:1-500表示的是图片的名称的一部分
- imgPath = './data/'+str(i)+'/'+str(i)+'_'+str(j)+'.bmp'
- img_arr = plt.imread(imgPath)
- feature.append(img_arr)
- target.append(i)
- feature = np.array(feature) #feature是一个三维的数组
- target = np.array(target)
- feature.shape
- #(5000, 28, 28)
feature目前是三维的numpy数组。必须变形成二维的才可以作为特征数据
- feature = feature.reshape(5000,784)
进行样本数据的打乱,并保证数据对应
- np.random.seed(10)
- np.random.shuffle(feature)
- np.random.seed(10)
- np.random.shuffle(target)
- 对样本数据进行拆分
- 测试数据
- 训练数据
- knn = KNeighborsClassifier(n_neighbors=9)
- knn.fit(x_train,y_train)
- knn.score(x_test,y_test)
- #对模型进行测试
- print('真实的结果:',y_test)
- print('模型分类的结果:',knn.predict(x_test))
保存训练好的模型
- from sklearn.externals import joblib
- #保存
- joblib.dump(knn,'./knn.m')
- #读取
- knn = joblib.load('./knn.m')
- knn
- 将外部图片带入模型进行分类的测试
- img_arr = plt.imread('./数字.jpg')
- plt.imshow(img_arr)
图片剪切
- eight_arr = img_arr[175:240,85:135]
- plt.imshow(eight_arr)
- eight_arr.shape
- #(65, 50, 3)
- #模型只可以测试类似于测试数据中的特征数据
- #将8对应的图片进行降维(65, 50, 3)降低成(784,)
- eight_arr = eight_arr.mean(axis=2)
- eight_arr.shape
- #(65, 50)
- #进行图片像素的等比例压缩
- import scipy.ndimage as ndimage
- eight_arr = ndimage.zoom(eight_arr,zoom=(28/65,28/50))
- eight_arr = eight_arr.reshape(1,784)
- eight_arr.shape
- #(1, 784)
- knn.predict(eight_arr)
代码以及样本数据查看连接:https://github.com/dylan3714/-
KNN手写数字识别的更多相关文章
- 机器学习(二)-kNN手写数字识别
一.kNN算法是机器学习的入门算法,其中不涉及训练,主要思想是计算待测点和参照点的距离,选取距离较近的参照点的类别作为待测点的的类别. 1,距离可以是欧式距离,夹角余弦距离等等. 2,k值不能选择太大 ...
- kaggle 实战 (1): PCA + KNN 手写数字识别
文章目录 加载package read data PCA 降维探索 选择50维度, 拆分数据为训练集,测试机 KNN PCA降维和K值筛选 分析k & 维度 vs 精度 预测 生成提交文件 本 ...
- 10,knn手写数字识别
# 导包 import numpy as np import matplotlib.pyplot as plt from sklearn.neighbors import KNeighborsClas ...
- 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!
1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...
- KNN实现手写数字识别
KNN实现手写数字识别 博客上显示这个没有Jupyter的好看,想看Jupyter Notebook的请戳KNN实现手写数字识别.ipynb 1 - 导入模块 import numpy as np i ...
- Kaggle竞赛丨入门手写数字识别之KNN、CNN、降维
引言 这段时间来,看了西瓜书.蓝皮书,各种机器学习算法都有所了解,但在实践方面却缺乏相应的锻炼.于是我决定通过Kaggle这个平台来提升一下自己的应用能力,培养自己的数据分析能力. 我个人的计划是先从 ...
- 基于OpenCV的KNN算法实现手写数字识别
基于OpenCV的KNN算法实现手写数字识别 一.数据预处理 # 导入所需模块 import cv2 import numpy as np import matplotlib.pyplot as pl ...
- K近邻实战手写数字识别
1.导包 import numpy as np import operator from os import listdir from sklearn.neighbors import KNeighb ...
- C#中调用Matlab人工神经网络算法实现手写数字识别
手写数字识别实现 设计技术参数:通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方法,有较高的识别率 关键字:二值化 投影 矩阵 目标定位 Matlab 手写数字图像识别简介: 手写 ...
随机推荐
- python学习笔记1 -- 面向对象编程高级编程1
说起高级其实也就是些基础的东西,但是活用和熟用肯定会大幅度提升代码质量 首先要记录的是面向对象的灵活性,及如何去控制其灵活性,她允许你在实例中新增属性和方法,允许你给类新增属性和方法,也支持在定义类时 ...
- Python 字典(Dictionary) copy()方法
描述 Python 字典(Dictionary) copy() 函数返回一个字典的浅复制.高佣联盟 www.cgewang.com 语法 copy()方法语法: dict.copy() 参数 NA. ...
- PHP touch() 函数
定义和用法 touch() 函数设置指定文件的访问和修改时间. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 touch(filename,time,atime) 参数 描述 ...
- 6.6 省选模拟赛 线段 二维数点问题 树套树 CDQ分治
LINK:线段 还是太菜了 没看出这道题真正的模型 我真是一个典型的没脑子选手. 考虑如何查询答案. 每次在一个线段x的状态被更改后 可以发现有影响的是 和x相连那段极长连续1子段. 设这个子段左端点 ...
- 不用注入方式使用Spring管理的对象中的方法,神奇
在小冷工作中遇到这么一个小问题,当你的业务层对象交给spring管理之后,在普通的类中调用这个类中的方法时候,会有个问题这个类在调用时候会一直返回一个null,而且还会抛出一个空指针异常. 小冷在遇到 ...
- 推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
推荐一个比较好用的流媒体服务开源代码: ZLMediaKit: 实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求 https://gitee.com/xiahcu/Z ...
- 眼见为实 — CSS的overflow属性
1. overflow属性 CSS的overflow属性指定当内容溢出一个元素的框,会发生什么.举个栗子: <!DOCTYPE html> <html> <head> ...
- JavaScript的函数和作用域闭包
1. 函数 1.1 定义函数 function add(x, y){ return x + y; } 上述函数定义如下: 关键字function指出这是一个函数定义: add是函数的名称: (x, y ...
- Docker 快速搭建 MySQL8 开发环境
使用 Docker 快速搭建一个 MySQL8 开发环境 步骤 获取镜像 docker pull mysql:8 启动容器,密码 123456,映射 3306 端口 docker run --name ...
- 《Java核心技术(卷1)》笔记:第12章 并发
线程 (P 552)多进程和多线程的本质区别:每一个进程都拥有自己的一整套变量,而线程共享数据 (P 555)线程具有6种状态: New(新建):使用new操作符创建线程时 Runnable(可运行) ...