深入浅出Python机器学习
上QQ阅读APP看书,第一时间看更新

3.3.3 使用K最近邻算法进行建模

在获得训练数据集和测试数据集之后,就可以机器学习的算法进行建模了。scikit-learn中整合了众多的分类算法,究竟应该使用哪一种呢?这里选择了K最近邻算法,因为我们在接下来的一章当中会详细介绍K最近邻算法,所以提前给读者们展示一下它的用法。

K最近邻算法根据训练数据集进行建模,在训练数据集中寻找和新输入的数据最近的数据点,然后把这个数据点的标签分配给新的数据点,以此对新的样本进行分类。现在我们在Jupyter Notebook中输入代码如下:

#导入KNN分类模型
from sklearn.neighbors import KNeighborsClassifier
#指定模型的n_neighbors参数值为1
knn = KNeighborsClassifier(n_neighbors = 1)

到这里读者可能会发现,我们给KNeighborsClassifier指定了一个参数,n_neighbors=1。正如我们在前文中所说,在scikit-learn中,机器学习模块都是在其固定的类中运行的,而K最近邻分类算法是在neighbors模块中的KNeighborsClassifier类中运行。而我们从一个类中创建对象的时候,就需要给模型指定一个参数。对于KNeighborsClassifier类来说,最关键的参数就是近邻的数量,也就是n_neighbors。而knn则是我们在KNeighborsClassifier类中创建的一个对象。

接下来我们要使用这个叫作knn的对象中称为“拟合(fit)”的方法来进行建模,建模的依据就是训练数据集中的样本数据X_train和其对应的标签y_train,所以我们输入代码如下:

运行上述代码,可得到结果如图3-20所示。

图3-20 程序返回的模型参数

【结果分析】从图3-20中我们可以看到knn的拟合方法把自身作为结果返回给了我们。从结果中我们能够看到模型全部的参数设定,当然了,除了我们指定的n_neighbors=1之外,其余参数都保持默认值即可。