1.课程目标
在本课程中,我们将探索如何使用Python和scikit-learn库在数字字体图片数据集上实现和评估K-最近邻(KNN)分类算法。我们希望通过这个课程,你能够理解分类算法的基本概念和原理,并通过实战项目提高你的数据处理和机器学习技能。
2.分类算法简介
分类算法是机器学习中的一种基本算法,它的目标是根据数据的特征,将数据划分到预先定义的类别中。常见的分类算法包括K-最近邻(KNN)、支持向量机(SVM)、决策树、随机森林等。
K-最近邻(KNN)算法是一种常用的机器学习算法,用于分类和回归问题。它的基本思想是根据样本之间的距离来确定新样本的类别。就是当预测一个新的值x的时候,根据它距离最近的K个点是什么类别来判断x属于哪个类别。
图中绿色的点就是我们要预测的那个点,假设K=3。那么KNN算法就会找到与它距离最近的三个点(这里用圆圈把它圈起来了),看看哪种类别多一些,比如这个例子中是蓝色三角形多一些,新来的绿色点就归类到蓝三角了。
但是,当K=5的时候,判定就变成不一样了。这次变成红圆多一些,所以新来的绿点被归类成红圆。从这个例子中,我们就能看得出K的取值是很重要的。
度量空间中点距离有好几种度量方式,比如常见的曼哈顿距离计算,欧式距离计算等等。不过通常KNN算法中使用的是欧式距离,拿二维平面为例,二维空间两个点的欧式距离计算公式如下:
这个高中应该就有接触到的了,其实就是计算(x1,y1)和(x2,y2)的距离。
拓展到多维空间,则公式为
KNN算法就是将预测点与所有点距离进行计算,然后保存并排序,选出前面K个值看看哪些类别比较多。
对于本章的案例,如果用数学公式表达,可以写成:
对于一个测试样本x,我们计算它与每一个训练样本xi的距离:
D(x, xi) = sqrt(sum((xj - xij)^2 for all j))
这里,j表示特征的索引,从X1到X64,xj表示测试样本x的第j个特征,xij表示训练样本xi的第j个特征。
然后,我们找出距离最小的K个训练样本,记作Nk(x)。
最后,我们预测测试样本x的标签y为:
y = argmax(v in Y)(sum(I(yi = v) for xi in Nk(x)))
这里,Y表示所