然而,算法中如何识别手写数字

  介绍

今天就跟大家聊聊有关资讯算法中如何识别手写数字,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

今天来介绍如何<强>使用资讯算法识别手写数字

1,手写数字数据集

手写数字数据集是一个用于图像处理的数据集,这些数据描绘了<强>(0,9)强的数字,我们可以用<强>资讯算法来识别这些数字。

MNIST是完整的手写数字数据集,其中包含了60000个训练样本和10000个测试样本。

<强> sklearn 中也有一个自带的手写数字数据集:

<李>

共包含1797个数据样本,每个样本描绘了一个<强> 8 * 8 像素的<强>(0,9)强的数字。

<李>

每个样本由65个数字组成:

<李>

前64个数字是特征数据,特征数据的范围是<强>[0,16]

<李>

最后一个数字是目标数据,目标数据的范围是<强>(0,9)

我们抽出5个样本来看下:

 0, 0, 5、13日9 - 1,0,0,0,0,13日,15日,10日,15日,5日,0,0,3,15日2 0,11日8 0,0,4,12日,0,0,8日8 0,0,5,8,0,0,9日,8 0,0,4,11日0,1,12日,7日,0,0,2,14日5,10,12,0,0,0,0,6日,13日,10日,0,0,0,0
  0,0,0,12日13日5 0,0,0,0,0,11日,16日,9日,0,0,0,0,3,15日,16日6 0,0,0,7日,15日,16日,16日,2,0,0,0,0,1,16日,16日,3,0,0,0,0,1,16日,16日6 0,0,0,0,1,16日,16日6 0,0,0,0,0,11日,16日,10日,0,0,1
  15 0,0,0,4日,12日,0,0,0,0,3,16日,15日,14日,0,0,0,0,8日,13日,8日,16日,0,0,0,0,1,6日,15日,11日,0,0,0,1,8日,13日,15日,1,0,0,0,9日,16日,16日5 0,0,0,0,3,13日,16日,16日,11日,5日,0,0,0,0,3,11日,16日,9日,0,2
  15 0 0 7日,13日,1,0,0,0,8日,13日,6日,15日,4日,0,0,0,2,1,13日,13日,0,0,0,0,0,2,15日,11日,1,0,0,0,0,0,1,12日,12日,1,0,0,0,0,0,1,10、8 0,0,0,8日,4,5,14日,9日,0,0,0,7日,13日,13日,9日,0,0,3
  0,0,0,1,11日,0,0,0,0,0,0,7,8,0,0,0,0,0,1,13日,6日,2,2,0,0,0,7日,15日,0,9日,8 0,0,5日,16日,10 0,16日6 0,0,4,15日,16日,13日,16日,1,0,0,0,0,3,15日,10日,0,0,0,0,0,2,16日4 0,0,4 

使用该数据集,需要先加载:

<>之前在祝辞祝辞,得到sklearn.datasets  import  load_digits   在祝辞祝辞,digits =, load_digits ()

查看第一个图像数据:

<>之前在祝辞祝辞,digits.images [0]   阵列([[0。,,,0。,,,5。,,13,,,9。,,,1,,,0。,,,0),   ,,,,,,(0。,,,0。,,13,,15,,10。,,15,,,5。,,,0),   ,,,,,,(0。,,,3,,15,,,2,,,0。,,11。,,,8。,,,0),   ,,,,,,(0。,,,4,,12,,,0。,,,0。,,,8。,,,8。,,,0),   ,,,,,,(0。,,,5。,,,8。,,,0。,,,0。,,,9。,,,8。,,,0),   ,,,,,,(0。,,,4,,11。,,,0。,,,1,,12,,,7。,,,0),   ,,,,,,(0。,,,2,,14。,,,5。,,10。,,12,,,0。,,,0),   ,,,,,,(0,0。,,,,,6。,,13,,10。,,,0。,,,0。,,,0。]])

我们可以用matplotlib将该图像画出来:

<>之前在祝辞祝辞,import  matplotlib.pyplot  as  plt   在祝辞祝辞,plt.imshow (digits.images [0])   祝辞祝辞祝辞,plt.show ()

画出来的图像如下,代表<强> 0 :

资讯算法中如何识别手写数字

2, sklearn对资讯算法的实现

<强> sklearn 库的邻居模块实现了<强>资讯相关算法,其中:

<李>

<代码> KNeighborsClassifier> <李>

<代码> KNeighborsRegressor>

这两个类的构造方法基本一致,这里我们主要介绍<代码> KNeighborsClassifier>

 KNeighborsClassifier (
  n_neighbors=5,,
  重量=& # 39;统一# 39;,,
  算法=& # 39;汽车# 39;,,
  leaf_size=30,,
  p=2,
  度量=& # 39;闵可夫斯基# 39;,,
  metric_params=没有,,
  n_jobs=没有,,
  * * kwargs) 

来看下几个重要参数的含义:

<李>

<强> n_neighbors :即<强>资讯中的K值,一般使用默认值5 .

<李>

<强>重量:用于确定邻居的权重,有三种方式:

<李>

权重=制服,表示所有邻居的权重相同。

<李>

权重=距离,表示权重是距离的倒数,即与距离成反比。

<李>

自定义函数,可以自定义不同距离所对应的权重,一般不需要自己定义函数。

<李>

:<强>算法用于设置计算邻居的算法,它有四种方式:

<李>

调整leaf_size会影响树的构造和搜索速度。

<李>

它和

然而,算法中如何识别手写数字