![深入浅出Python机器学习](https://wfqqreader-1252317822.image.myqcloud.com/cover/94/44510094/b_44510094.jpg)
上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,所以我们输入代码如下:
![](https://epubservercos.yuewen.com/89A715/23721687209561106/epubprivate/OEBPS/Images/Figure-P56_4254.jpg?sign=1739525817-y4IQ7y5UF27WBGa0Jc2HVn8WWV1KgWaW-0-2e4b0a19c9e69923e3d049e108eebd32)
运行上述代码,可得到结果如图3-20所示。
![](https://epubservercos.yuewen.com/89A715/23721687209561106/epubprivate/OEBPS/Images/Figure-P56_4256.jpg?sign=1739525817-Cjaggwru7JGqlkcxrsljuM3ccjfjTfAa-0-3920354c7d6c1e171c6ddf507c08b69d)
图3-20 程序返回的模型参数
【结果分析】从图3-20中我们可以看到knn的拟合方法把自身作为结果返回给了我们。从结果中我们能够看到模型全部的参数设定,当然了,除了我们指定的n_neighbors=1之外,其余参数都保持默认值即可。