机器学习中唯逐一个不需求训练过程的算法
作者头像
  • 燕赵晚报
  • 2020-05-13 10:51:28 1

序言

大家好!我是Python数据分析师,希望通过我的经验分享,帮助大家更好地掌握人工智能技术。因此,我编写了一套名为“人工智能四部曲”的教程,包括《15天学会Python编程》、《每天10分钟,用Python学数据分析》、《Python数据可视化实战》和《33天搞定机器学习》。

本文是《33天搞定机器学习》系列的第22篇,我们将探讨K最近邻算法(kNN)。这是一个相对简单的算法,希望读者能够轻松学习。

什么是kNN?

k近邻法(k-nearest neighbor, kNN)是一种基于实例的学习方法,主要用于分类和回归任务。实践中,它更多地应用于分类问题。kNN的基本思想是:如果两个样本的特征足够相似,那么它们很可能属于同一类别,并具有该类别的典型特征。通俗地说,就是“物以类聚,人以群分”。

kNN的工作原理很简单。给定一个训练集,当需要对新的输入进行分类时,算法会在训练数据中找到与新输入最接近的k个样本,然后根据这k个样本的多数类别来决定新输入的类别。

kNN算法的过程

  1. 选择距离度量方式:通过所有特征计算新数据与已知类别数据集中的距离。
  2. 按距离递增排序:选择与当前输入距离最近的k个样本。
  3. 分类决策:对于分类问题,返回这k个样本中最常见的类别;对于回归问题,返回这k个样本的加权平均值。

举个例子,假设有一张图,绿色的圆圈代表新输入的数据点,我们需要判断它是红色三角形还是蓝色方块。如果k=3,由于红色三角形的比例较高(2/3),绿色圆圈将被归类为红色三角形。若k=5,则因为蓝色方块的比例较高(3/5),绿色圆圈将被归类为蓝色方块。

由此可见,k值的选择直接影响kNN算法的结果。

kNN的三要素及K值选择

k近邻算法有三个关键要素:距离度量、k值选择和分类决策规则。距离度量已在前文介绍,不再赘述。分类决策规则通常是多数表决,即根据k个最近邻样本的多数类别来决定新输入的类别。

k值的选择至关重要。k值过小会导致算法对噪声敏感,从而降低分类精度;而k值过大则可能导致分类效果不佳。常用的k值选择方法是交叉验证法,这种方法在之前的章节中已经讨论过。

kNN的优缺点

优点:

  • 简单易懂:实现容易,不需要估计参数或训练模型。
  • 适用广泛:适用于稀有事件的分类,特别是多分类问题,kNN的表现通常优于SVM。

缺点:

  • 计算复杂:每个待分类的样本都需要计算其与所有已知样本的距离,计算量大。
  • 缺乏解释性:预测结果难以解释,不像决策树那样提供明确的规则。

kNN的小案例

我们可以自己实现kNN算法,也可以利用sklearn库中的KNeighborsClassifier类来构建模型。下面是一些关键参数的说明:

```python from sklearn.neighbors import KNeighborsClassifier

创建模型

model = KNeighborsClassifier( nneighbors=5, # k=5 weights='uniform', # 权重均匀分布 algorithm='auto', leafsize=30, p=2, metric='minkowski' ) ```

  • n_neighbors=5:表示k=5,即考虑最近的5个样本。
  • weights='uniform':表示所有最近邻样本的权重相同;若选择weights='distance',则距离越近的样本权重越大。

建模过程

以下是建模的具体步骤:

  1. 数据输入
  2. 数据预处理
  3. 拆分测试集和验证集
  4. 构建模型
  5. 模型训练
  6. 评估模型
  7. 预测数据

我们使用Scikit-Learn提供的葡萄酒数据集进行实验。该数据集包含了三种不同类型的葡萄酒的化学分析结果。数据集中有13个特征和一个目标变量(葡萄酒种类)。葡萄酒种类包括:“0类”、“1类”和“2类”。

实验结果表明,当k=1时,模型的准确率最高。

完整学习,欢迎订阅,获取代码及数据集

希望以上内容对你有所帮助。如果你有任何疑问或建议,欢迎订阅我们的课程,获取更多代码和数据集。


以上是改写后的文章,内容更加紧凑且减少了原文的相似度,同时保留了关键信息和核心概念。希望对您有帮助!

    本文来源:图灵汇
责任编辑: : 燕赵晚报
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
算法机器训练需求过程学习一个
    下一篇