本文主要是用kNN算法对字母图片进行特征提取,分类识别。内容如下:
kNN算法及相关Python模块介绍
对字母图片进行特征提取
kNN算法实现
kNN算法分析
一、kNN算法介绍
K近邻(kNN,k-NearestNeighbor)分类算法是机器学习算法中最简单的方法之一。所谓K近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。我们将样本分为训练样本和测试样本。对一个测试样本 t 进行分类,kNN的做法是先计算样本 t 到所有训练样本的欧氏距离,然后从中找出k个距离最短的训练样本,用这k个训练样本中出现次数最多的类别表示样本 t 的类别。
欧式距离的计算公式:
假设每个样本有两个特征值,如 A :(a1,b1)B:(a2,b2) 则AB的欧式距离为
举个例子:根据下图前四位同学的成绩和等级,预测第五位小白同学的等级。
我们可以看出:语文和数学成绩是一个学生的特征,等级是一个学生的类别。
前四位同学是训练样本,第五位同学是测试样本。我们现在用kNN算法来预测第五位同学的等级,k取3。
按照上面欧式距离公式我们可以计算
d(5-1)=
= 7 d(5-2)=
= 30
d(5-3)=
= 6 d(5-4)=
= 19.2
因为 k 取 3,所以我们寻找3个距离最近的样本,即编号为3,1,4的同学,他们的等级分别是 B,B,A。 这三个样本的分类中,出现了2次B,一次A,B出现次数最多,所以5号同学的等级可能为B
常用Python模块
NumPy:NumPy是Python的一种开源的数值计算扩展。这种工具可用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。
PIL:Python Imaging Library,是Python平台事实上的图像处理标准库,功能非常强大&#