《33天搞定机器学习》:K近邻的概念、原理、优缺陷、案例
作者头像
  • 彭伟
  • 2020-05-13 12:01:12 5

大家好,我是一名Python数据分析师,希望通过这篇文章分享我在人工智能领域的学习心得。我编写了四本书籍:《15天学会Python编程》、《每天10分钟,用Python学数据分析》、《Python数据可视化实战》和《33天搞定机器学习》,希望能帮助更多的人掌握这些技能。

在这篇文章中,我将分享《33天搞定机器学习》这本书的部分内容,重点介绍K最近邻(kNN)算法。这是一个相对简单的算法,适合初学者学习。

什么是kNN?

k近邻算法(k-Nearest Neighbor, kNN)是一种基于实例的学习方法,既可以用于分类也可以用于回归。但在实际应用中,主要用于分类任务。其核心理念是:如果两个样本的特征足够相似,那么它们很可能属于同一类别,并且拥有该类别样本的特征。通俗来说,就是“近朱者赤,近墨者黑”的道理。

kNN的工作机制非常直观。给定一个训练集,对于新的输入实例,找到训练集中与之最接近的k个实例,然后根据这k个实例中大多数的类别来判断输入实例的类别。

kNN算法的步骤

  1. 距离计算:选定一种距离度量方式,计算新数据与训练集中所有已知类别数据点的距离。
  2. 排序:按距离递增顺序排列,选取距离最小的k个点。
  3. 分类决策:如果是分类问题,则返回这k个点中出现频率最高的类别;如果是回归问题,则返回这k个点的加权平均值。

举个例子,假设我们有一个新实例(如图所示),需要判断它是红色三角形还是蓝色方形。如果k=3,因为红色三角形占比更高,所以新实例会被归类为红色三角形;如果k=5,因为蓝色方形占比更高,新实例会被归类为蓝色方形。

k值的选择与kNN的三要素

k近邻算法的三个基本要素包括:距离度量、k值的选择和分类决策规则。距离度量已在前面提到,不再赘述。分类决策规则通常采用多数表决的方式,即根据k个最近邻的类别决定新实例的类别。k值的选择至关重要,如果k值太小,容易受到噪声的影响,导致分类精度下降;如果k值太大,则可能包含过多不相似的数据,同样影响分类效果。常见的k值选择方法是交叉验证法。

kNN的优缺点

kNN算法的优点在于实现简单,无需参数估计和训练过程,尤其适用于稀有事件的分类和多分类问题。然而,它的缺点也不容忽视。首先,计算复杂度较高,每个待分类样本都需要与所有已知样本进行距离计算,效率较低;其次,预测结果缺乏可解释性,不像决策树那样能提供明确的规则。

小案例

接下来,我将展示一个简单的kNN算法实现示例。代码如下:

```python

示例代码

from sklearn.neighbors import KNeighborsClassifier import numpy as np

训练数据

Xtrain = np.array([[1, 2], [2, 3], [3, 4], [6, 7], [7, 8], [8, 9]]) ytrain = np.array([0, 0, 0, 1, 1, 1])

测试数据

X_test = np.array([[5, 5]])

创建模型并训练

knn = KNeighborsClassifier(nneighbors=1) knn.fit(Xtrain, y_train)

预测

predictions = knn.predict(X_test) print(predictions) ```

在这个例子中,当k=1时,预测结果的准确率最高。

希望以上内容对你有所帮助,如果你对完整内容感兴趣,欢迎订阅我的专栏,获取更多代码和数据集。


希望这段改写后的文章能够满足您的需求。如果有任何进一步的修改或补充需求,请随时告知。

    本文来源:图灵汇
责任编辑: : 彭伟
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
近邻搞定缺陷原理概念机器案例学习
    下一篇