数据分析与数据挖掘 - 09邻近算法 (2)

关键点:k值的选取,首先k值一定是奇数,这样可以确保两个类别的投票不会一样,其次,k值越大,模型的偏差越大,对于噪声数据(错误数据或异常数据)越不敏感,k值太小就会造成模型的过拟合。

二 邻近算法的代码练习 1 准备数据 # 从sklearn库中的数据集对象里导入样本生成器中的make_blobs方法帮助我们生成数据 from sklearn.datasets.samples_generator import make_blobs # 声明三个直角坐标系中的位置 centers = [[-2, 2], [2, 2], [0, 4]] # 生成数据,其中n_samples是生成数据的个数,centers是中心点,cluster_std是标准差,指明离散程度 x, y = make_blobs(n_samples=60, centers=centers, cluster_std=0.6) # x是生成的数据,y是不同的数据对应所属的的类别0,1,2 print(x, y) 2 用图形来帮助理解 import matplotlib.pyplot as plt import numpy as np plt.figure(figsize=(16, 10), dpi=144) c = np.array(centers) # x轴,y轴,c颜色 s指定点的大小 plt.scatter(x[:, 0], x[:, 1], c=y, s=100, cmap="cool") # 画出中心点 plt.scatter(c[:, 0], c[:, 1], s=100, marker="^", c="orange") plt.show()

图形显示如下图所示:

image.png


图形中显示的三个三角形的点就是中心点,围绕在它们周围的圆点就是我们随机生成的数据的点。

3 KNN算法对数据的训练 # 从sklearn库中导入K邻居分类器:KNeighbosrClassifier from sklearn.neighbors import KNeighborsClassifier # 设定K值 k = 5 # 声明k临近分类器对象 clf = KNeighborsClassifier(n_neighbors=k) # 训练模型 clf.fit(x, y) 4 预测样本数据 # 定义样本数据 x_sample = [[0, 2]] # 使用模型进预测 neighbors = clf.kneighbors(x_sample, return_distance=False) print(neighbors) # 输出值:[[23 39 21 47 29]]

x_sample变量是我们要进行预测的样本,然后使用clf.kneighbors方法就可以对这个样本进行预测了。关于clf.kneighbors的参数return_distance,它决定了是否返回计算后的距离,默认是True,这里我把它修改成了False,你如果想要看一下值为True是什么样子,可以自己手动修改为True。到这里你可以有一点懵,这怎么就预测完成了呢?输出值表示的是什么意思呢?


输出值表示的是5个经过计算之后的位于x训练集中的索引值,它们并不是直接的位置。

5 画出预测的结果

为了能够使预测的结果更加直观,我们还需要用代码把他们画出来。

# 把带预测的样本以及和其最近的5个点标记出来 plt.figure(figsize=(8, 5), dpi=144) # dpi是像素值 plt.scatter(x[:, 0], x[:, 1], c=y, s=100, cmap='cool') # 样本数据 plt.scatter(c[:, 0], c[:, 1], s=100, marker='^', c='k') # 中心点 # 带预测的点 plt.scatter(x_sample[0][0], x_sample[0][1], marker='x', s=100, cmap='cool') # 把预测点与距离最近的5个样本连成线 for i in neighbors[0]: plt.plot([x[i][0], x_sample[0][0]], [x[i][1], x_sample[0][1]], 'k--', linewidth=0.6) plt.show()

显示结果如下图所示:

image.png

三 花卉识别项目练习 1 先认识三朵花

在这一小节我们将通过一个花卉识别项目的练习来巩固我们所讲的KNN算法,训练数据集是非常著名的鸢尾花数据集,涉及到的花的种类一共分为三种:


第一种花是山鸢尾,长下面这个样子

image.png


第二种花是锦葵,也叫虹膜锦葵

image.png


第三种花是变色鸢尾

image.png

2 导入数据集

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgjwdp.html