Python3入门机器学习
2.1 k近邻算法基础
什么是k近邻算法?
K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。
所谓K近邻算法,即是给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例(也就是上面所说的K个邻居), 这K个实例的多数属于某个类,就把该输入实例分类到这个类中。
下面通过一个实例来进一步说明k近邻算法:
(1).首先准备实验所需要的数据集。raw_data_X表示样本的特征,raw_data_y表示每一个样本所属的类别,用0和1来表示。然后将这些数据集转化成训练数据集X_train和y_train。
(2).根据数据集绘制散点图,形成一个样本空间,如下图。其中用0标记种类的样本用绿色的点描绘,用1标记种类的样本用红色的点描绘。
(3).这时若有一个新的样本点,预测它属于哪一部分。下图为散点图中加入这个点,用蓝色来表示。
(4).定义一个空的列表distances,用于存放各个样本点到这个新加入点x的距离。其中距离也就是欧拉距离。
(5).调用numpy中的argsort()方法,对一个数组进行排序,但是返回的是相应的排序结果的索引。然后将结果存给nearest这个变量,并且假设k=6。定义一个topK_y存放最近的6个点本来所属的的y。
(6).首先引入Counter这个方法,用来统计topK_y中每个数字(0和1)出现的频次,并将它赋给votes变量。然后点用most_common()方法找出票数最多的n个元素,我们传入1,也就是找出票数最多的1个元素,返回一个由元组组成的列表,其中元组的第一个元素为类别(0或1),第二个元素为频次。然后获得这个1,将它赋给predict_y这个变量,以求得新的样本所属的类别。