KNN算法原理
K近邻是机器学习中常见的分类方法之间,也是相对最简单的一种分类方法,属于监督学习范畴。其实K近邻并没有显式的学习过程,它的学习过程就是测试过程。
k近邻算法思想:先给你一个训练数据集D,包括每个训练样本对应的标签。然后给你一个新的测试样本T,问你测试样本的标签预测是什么,K近邻的方法就是找到T到D中每一个样本的相似度,然后根据相似度大小对D中样本排序,取前K个最相似的样本的标签的众数作为测试样本T的标签(即前K个样本投票决定)。具体相似度怎么度量,是根据测试样本到D中每个训练样本的距离度量,一般用的最多的是欧氏距离,也可以更广泛的p范数(欧氏距离是2范数)。 譬如曼哈顿距离。
当p=1时为曼哈顿距离,p=2时为最常用的欧氏距离。
基于sklearn包的KNN算法实现
import numpy as np
from sklearn import datasets #包含很多数据集的模块
from sklearn.model_selection import train_test_spilt #将训练集和测试集分开的模块
from sklearn.neighbors import KNeighborsClassifier # K-近邻算法模块
import matplotlib.pyplot as plt
data = datasets.load_digits() #导入数字数据集
data_x = data.data