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

3.2.2 K最近邻算法处理多元分类任务

接下来,我们要先生成多元分类任务所使用的数据集,为了让难度足够大,这次我们通过修改make_blobs的centers参数,把数据类型的数量增加到5个,同时修改n_samlpes参数,把样本量也增加到500个,输入代码如下:

运行代码,会得到结果如图3-8所示的结果。

图3-8 分类数量为5的数据集

【结果分析】从图3-8中我们可以看到,新的数据集的分类数量变成了5个,而其中有两类数据还有一些重合(图片中心位置的点),这下难度提高了不少。

让我们再次用K最近邻算法建立模型来拟合这些数据,输入代码如下:

运行代码,将会得到如图3-9所示的结果。

图3-9 K最近邻算法对5类数据进行的分类

【结果分析】从图3-9中我们可以看到,K最近邻算法仍然可以把大部分数据点放置于正确的分类中,但有一小部分数据还是进入了错误的分类中,这些分类错误的数据点基本都是互相重合的位于图像中心位置的数据点。

那么模型的正确率究竟有多高呢?我们用下面的代码来进行一下评分:

#将模型的评分进行打印
print('\n\n\n')
print('代码运行结果:')
print('==============================')
print('模型正确率:{:.2f}'.format(clf.score(X2,y2)))
print('==============================')
print('\n\n\n')

运行代码,可以得到结果如图3-10所示。

图3-10 模型在新数据集中的得分

【结果分析】看来虽然我们故意刁难了K最近邻算法一下,但它仍然能够将96%的数据点放进正确的分类中,这个结果可以说还是相当不错的。

接下来,我们再试试使用K最近邻算法来进行回归分析,看看结果如何。