🌟1.2 k近邻算法api初步使用🌟

🌈学习目标

目标

  • 了解sklearn工具的优点和包含内容
  • 应用sklearn中的api实现KNN算法的简单使用

Alt text

  1. 获取数据集
  2. 数据基本处理
  3. 特征工程
  4. 机器学习
  5. 模型评估

🛠️Scikit-learn 工具介绍

Alt text

Scikit-learn是Python语言的机器学习工具,它具有以下特点:

  • 包括许多知名的机器学习算法的实现
  • 文档完善,容易上手,拥有丰富的AP

🔧安装

使用以下命令进行安装:
pip3 install scikit-learn

安装好之后可以通过以下命令查看是否安装成功:
import sklearn

注:安装scikit-learn需要Numpy, Scipy等库。

📦Scikit-learn包含的内容

Alt text

  • 分类、聚类、回归 - 特征工程
  • 模型选择、调优

📌K-近邻算法API

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)

  • n_neighbors:int,可选(默认 = 5),k_neighbors 查询默认使用的邻居数

📋案例

👣步骤分析

  1. 获取数据集
  2. 数据基本处理(该案例中省略)
  3. 特征工程(该案例中省略)
  4. 机器学习
  5. 模型评估(该案例中省略)

💻代码过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 导入模块
from sklearn.neighbors import KNeighborsClassifier

# 构造数据集
x = [[0], [1], [2], [3]]
y = [0, 0, 1, 1]

# 机器学习 -- 模型训练
# 实例化API
estimator = KNeighborsClassifier(n_neighbors=2)
# 使用fit方法进行训练
estimator.fit(x, y)

# 进行预测
result = estimator.predict([[1]])
print(result)

❓问题解答

1. 选取K值的大小?

K值的选择对KNN模型有重要影响:

  • K值过小:
    • 容易受到异常点的影响
    • 容易过拟合,即“学习”近似误差会减小,但“学习”的估计误差会增大,整体模型变得复杂。
  • K值过大:
    • 受到样本均衡的问题
    • 容易欠拟合,学习的近似误差会增大,模型变得简单。
  • K=N(N为训练样本个数):完全不足取,因为此时无论输入实例是什么,都只是简单的预测它属于在训练实例中最多的类,模型过于简单,忽略了训练实例中大量有用信息。

在实际应用中,K值一般取一个比较小的数值,例如采用交叉验证法(简单来说,就是把训练数据再分成两组:训练集和验证集)来选择最优的K值。

近似误差:对现有训练集的训练误差,关注训练集。如果近似误差过小可能会出现过拟合的现象,对现有的训练集能有很好的预测,但是对未知的测试样本将会出现较大偏差的预测,模型本身不是最接近最佳模型。

估计误差:可以理解为对测试集的测试误差,关注测试集。估计误差小说明对未知数据的预测能力好,模型本身最接近最佳模型。

2. api中其他参数的具体含义?

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, algorithm='auto')

  • n_neighbors:int,可选(默认 = 5),k_neighbors 查询默认使用的邻居数
  • algorithm:{‘auto’,‘ball_tree’,‘kd_tree’,‘brute’},快速 k 近邻搜索算法,默认参数为 auto,可以理解为算法自己决定合适的搜索算法。除此之外,用户也可以自己指定搜索算法:
    • brute:蛮力搜索,也就是线性扫描,当训练集很大时,计算非常耗时。
    • kd_tree:构造kd树存储数据以便对其进行快速检索的树形数据结构,kd树也就是数据结构中的二叉树。以中值切分构造的树,每个结点是一个超矩形,在维数小于20时效率高。
    • ball_tree:是为了克服kd树高维失效而发明的,其构造过程是以质心C和半径r分割样本空间,每个节点是一个超球体。

📚总结

sklearn的优势

  • 文档多,且规范
  • 包含的算法多 - 实现起来容易

knn中的api

sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, algorithm='auto')

KNN中K值大小选择对模型的影响

  • K值过小:容易受到异常点的影响,容易过拟合
  • K值过大:受到样本均衡的问题,容易欠拟合

通过以上内容,我们对sklearn工具和KNN算法的API有了初步的了解,并且掌握了如何使用sklearn中的KNN算法进行简单的模型训练和预测。同时,我们也了解了K值选择对模型的影响以及API中其他参数的含义。