1.k-近邻分类器
k-近邻算法是一种最简单的数据挖掘算法,在平时使用中也很常见。k-近邻中的近邻指的是距离待预测数据的数据点,而k-近邻就指的是取前k近的数据点,例如3-近邻算法就是找到3个离待预测数据作为最近邻。k-近邻算法是一种监督学习的算法(即原本的数据集中是分类明确的)。
2.k-近邻分类器的原理
最近邻分类器把每个样例(训练数据、测试数据同时也有待预测的数据)当作是d维空间上的一个数据点,而d指的是样例的属性个数。而在d维空间上就有不同点之间的“距离”(距离有很多种,汉明距离,欧拉距离,闵科夫斯基距离等),依靠这些点之间的距离的差异,将有远近之分。那么k-近邻分类器就是把预测的原则定位取决与这些离它“最近”的k个数据点,若离它最近的数据点中A类多余B类,则认为它大概率是B类的数据点,完成分类。
3.k-近邻的自写代码
import numpy as np
from math import sqrt
from collections import Counter
#传入参数分别为属性训练集,类别训练集,参数k,待预测的数据
def KNN_classify(x_train , y_train , k , predict):
assert 1 <= k <= len(x_train) , 'The value of k is invalid.'
assert len(x_train) == len(y_train) , 'The number of x is not equal to the number of y.'
#这里点与点的距离取的是欧拉距离,如果是不止这么少的属性空间,那么就运用循环
distance = [sqrt( ((x