今天就跟大家聊聊有关资讯算法中如何识别手写数字,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。
今天来介绍如何<强>使用资讯算法识别手写数字强>
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会影响树的构造和搜索速度。
李> <李>它和