K-近邻算法API
🌟1.2 k近邻算法api初步使用🌟
🌈学习目标
目标
- 了解sklearn工具的优点和包含内容
- 应用sklearn中的api实现KNN算法的简单使用
- 获取数据集
- 数据基本处理
- 特征工程
- 机器学习
- 模型评估
🛠️Scikit-learn 工具介绍
Scikit-learn是Python语言的机器学习工具,它具有以下特点:
- 包括许多知名的机器学习算法的实现
- 文档完善,容易上手,拥有丰富的AP
🔧安装
使用以下命令进行安装:pip3 install scikit-learn
安装好之后可以通过以下命令查看是否安装成功:import sklearn
注:安装scikit-learn需要Numpy, Scipy等库。
📦Scikit-learn包含的内容
- 分类、聚类、回归 - 特征工程
- 模型选择、调优
📌K-近邻算法API
sklearn.neighbors.KNeighborsClassifier(n_neighbors=5)
n_neighbors
:int,可选(默认 = 5),k_neighbors 查询默认使用的邻居数
📋案例
👣步骤分析
- 获取数据集
- 数据基本处理(该案例中省略)
- 特征工程(该案例中省略)
- 机器学习
- 模型评估(该案例中省略)
💻代码过程
1 | # 导入模块 |
❓问题解答
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中其他参数的含义。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Coisini!
评论