2.2.1 K-近邻算法概述

版权声明:时间是有限的,知识是无限的,那就需要在有限的时间里最大化的获取知识。 https://blog.csdn.net/Fire_to_cheat_/article/details/84875117

1. 什么是K-近邻算法?

k最近邻(k-Nearest Neighbor,kNN)分类算法是一个比较成熟也是最简单的机器学习(Machine Learning)算法之一。该方法的思路是:如果一个样本在特征空间中与k个实例最为相似(即特征空间中最邻近),那么这k个实例中大多数属于哪个类别,则该样本也属于这个类别。

2. K-近邻算法的本质

一般的机器学习算法一般包括两个过程:训练过程和测试过程。
训练过程通过使用机器学习算法在训练样本上迭代训练,得到较好的机器学习模型。
测试过程是使用测试数据来验证机器学习模型的好坏,通过正确率来呈现。
KNN算法的本质是在训练过程中,它将所有训练样本的输入和输出标签(label)都存储起来。测试过程中,计算测试样本和每个训练样本距离的最近的前k个训练样本。然后对着k个训练样本的label进行投票,票数最多的那一类即为测试样本所归类。

其实,KNN算法非常简单,可以说在训练过程基本没有算法参与,只有存储训练样本。可以说KNN算法是一种识记类算法。因此,KNN虽然简单,但是明显包含了一下几个缺点:

  • 训练过程中所有的训练样本及其输出的label存储起来,因此,空间成本很大。
  • 测试过程中,每个测试样本都跟训练样本进行比较,因此,运行时间成本很大。
  • 采用距离比较的分类方式,分类准确率不高。

3. Iris分类实现

首先,数据集我们选择经典的鸢尾花卉数据集(Iris)。Iris数据集每个样本x包含了花萼长度(sepal length)、花萼宽度(sepal width)、花瓣长度(petal length)、花瓣宽度(petal width)四个特征。样本标签y共有三类,分别是Setosa,Versicolor和Virginica。Iris数据集总共包含150个样本,每个类别由50个样本,整体构成一个150行5列的二维表。
下面是该实验的jupyter notebook:
https://github.com/Bryce1010/MachineLearning_action/blob/master/Week1/Iris/Iris.ipynb

猜你喜欢

转载自blog.csdn.net/Fire_to_cheat_/article/details/84875117