训练算法并对算法的准确值准确率进行估计

#导入相应模块

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

#将所有准备的样本加载到列表中

x = []
for i in range(10):
     for j in range(1,501):
          x.append(plt.imread("./data/%d/%d_%d.bmp"%(i,i,j)))                      #读取数据

#对样本数据进行操作处理

#先将列表转化成为数组

x = np.array(x)
x.shape

#准备模型数据,并让模型数据与样本数据一一对应

y = [0,1,2,3,4,5,6,7,8,9]*500

y = np.array(y)
y.sort()

index = np.arange(5000)

# 将索引打乱           
np.random.shuffle(index)

# 打乱数字顺序,通过索引来随机提取数据
x = x[index]
y = y[index]

# 采取训练数据和测试数据,此时训练数据和测试数据一一对应
x_test = x[3750:]
x_train = x[:3750]
y_train = y[:3750]
y_test = y[3750:]

#引入KNN算法

from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier(n_neighbors=5)

#想用训练数据和训练模型对算法进行训练

knn.fit(x_train,y_train)

#训练结果

"""

KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
metric_params=None, n_jobs=None, n_neighbors=5, p=2,
weights='uniform')

"""

#用测试数据对训练的算法进行测试算法的预测准确率

x_predict = knn.predict(x_test)

array = x_predict==y_test

#array是含有Ture和False的数组

#对于0和1的数组进行求平均值,则就是值为1的出现的概率

array.mean()

#算法准确率

0.9376

自定义验证算法

# 加载样本图片
numall = plt.imread("./timg.jpg")
# plt.imshow(numall)

#对需要识别的数字进行切片,使之符合算法样本要求(算法的训练数据的尺寸是(28,28))

#测试数据的格式必须和算法训练数据的样本格式相同
num8 = numall[280:510,380:600][:,:,0]
plt.imshow(num8)

#导入算法响应模块,对图片尺寸进行修正

from scipy import misc
num8 = misc.imresize(num8,(28,28))
num8.shape

num8 = num8.reshape(1,-1)
knn.predict(num8)

knn算法之预测数字的更多相关文章

  1. 吴裕雄--天生自然python机器学习实战:K-NN算法约会网站好友喜好预测以及手写数字预测分类实验

    实验设备与软件环境 硬件环境:内存ddr3 4G及以上的x86架构主机一部 系统环境:windows 软件环境:Anaconda2(64位),python3.5,jupyter 内核版本:window ...

  2. 机器学习--kNN算法识别手写字母

    本文主要是用kNN算法对字母图片进行特征提取,分类识别.内容如下: kNN算法及相关Python模块介绍 对字母图片进行特征提取 kNN算法实现 kNN算法分析 一.kNN算法介绍 K近邻(kNN,k ...

  3. 手动实现KNN算法

    手动实现KNN算法 计算距离 取k个邻近排序 距离(欧氏) 预习 import numpy as np # 数组运算是面向元素级别的 arr1 = np.array([1,2,3]) arr2 = n ...

  4. 机器学习-K近邻(KNN)算法详解

    一.KNN算法描述   KNN(K Near Neighbor):找到k个最近的邻居,即每个样本都可以用它最接近的这k个邻居中所占数量最多的类别来代表.KNN算法属于有监督学习方式的分类算法,所谓K近 ...

  5. 在opencv3中实现机器学习算法之:利用最近邻算法(knn)实现手写数字分类

    手写数字digits分类,这可是深度学习算法的入门练习.而且还有专门的手写数字MINIST库.opencv提供了一张手写数字图片给我们,先来看看 这是一张密密麻麻的手写数字图:图片大小为1000*20 ...

  6. 基于OpenCV的KNN算法实现手写数字识别

    基于OpenCV的KNN算法实现手写数字识别 一.数据预处理 # 导入所需模块 import cv2 import numpy as np import matplotlib.pyplot as pl ...

  7. KNN 算法-实战篇-如何识别手写数字

    公号:码农充电站pro 主页:https://codeshellme.github.io 上篇文章介绍了KNN 算法的原理,今天来介绍如何使用KNN 算法识别手写数字? 1,手写数字数据集 手写数字数 ...

  8. Python 手写数字识别-knn算法应用

    在上一篇博文中,我们对KNN算法思想及流程有了初步的了解,KNN是采用测量不同特征值之间的距离方法进行分类,也就是说对于每个样本数据,需要和训练集中的所有数据进行欧氏距离计算.这里简述KNN算法的特点 ...

  9. [Python] 应用kNN算法预测豆瓣电影用户的性别

    应用kNN算法预测豆瓣电影用户的性别 摘要 本文认为不同性别的人偏好的电影类型会有所不同,因此进行了此实验.利用较为活跃的274位豆瓣用户最近观看的100部电影,对其类型进行统计,以得到的37种电影类 ...

随机推荐

  1. os.walk详解

    https://www.jianshu.com/p/bbad16822eab python中os.walk是一个简单易用的文件.目录遍历器,可以帮助我们高效的处理文件.目录方面的事情. 1.载入 要使 ...

  2. Smarty中的请求变量和保留变量的使用范例

    PHP中提供的超全局数组 Smarty中对应的请求变量 $_GET               <{$smarty.get}> $_POST                         ...

  3. Eclipse启动SDK Manager报错:[SDK Manager] 'xcopy' 不是内部或外部命令,也不是可运行的程序。

    解决方法,在path环境变量下加上C:\WINDOWS\system32;或将C:\WINDOWS\system32\xcopy.exe拷贝到android sdk目录的tools下面即可正常运行.

  4. C# 实现本地化日志管理

    1.新建一个类库解决方案 CommnoLog 2.新建两个文件夹 2.1FileUtil.cs  代码如下 public static class FileUtil { /// <summary ...

  5. Java基础:(八)异常

    Throwable可以用来表示任何可以作为异常抛出的类,分为两种:Error和Exception.其中Error用来表示JVM无法处理的错误, Exception又分为两种: 受检异常:需要用try. ...

  6. git从无到有建立一个仓库并上传文件

    第一步,创建仓库 登录自己的码云  第二步,本地操作 1.到你所要上传的文件夹中右键 选择git bash here 2.初始化项目 git init 3.连接远程仓库 刚才我们建立的时候的远程地址就 ...

  7. 《移动Web前端高效开发实战》笔记2——使用Gulp构建一个ECMAScript 6和Sass应用

    8.3.1 安装和配置 运行Gulp需要Node.js环境,请参看第二章内容搭建Node.js环境.使用NPM全局安装Gulp,命令如下: npm install gulp-cli –g 然后,在项目 ...

  8. HTML5标签选择指引

  9. 【简问】一些个人不会的问题,收到解答经核实OK的会在下方附注答案

    1.p标签内放行内块(如,input)适宜么(已知p是块元素,但p内不宜放置div)? 2.如何单独设置文字下划线颜色? 3.行内元素可以定位吗? 4.支持 margin:0 auto; 的元素类型有 ...

  10. C#字段声明部分如何调用该类中的方法进行初始化?

    问题描述: 有时,功能需求,需要在初始化字段时,需要视不同情况赋予不同字段值. 解决办法: 将方法设为static即可. e.g. public string str = SetStr(); publ ...