简单地说,k近邻算法采用测量不同特征值之间的距离方法进行分类。
即,假设样本数据集已知各个特征值和其类别,在输入没有类别标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,计算两数据点之间的欧几里得距离,选择前k个距离最小(特征最相似)的数据所对应的分类标签,出现次数最多的分类,作为新数据的分类。
1.导入科学计算包NumPy和运算符模块,使用createDataSet函数创建数据集和标签,结果如表格所示:
from numpy import *
import operator
def createDataSet():
group = array([[1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]])
labels = ['A', 'A', 'B', 'B']
return group, labels
特征1 | 特征2 | 分类 | |
样本1 | 1.0 | 1.1 | A |
样本2 | 1.0 | 1.0 | A |
样本3 | 0 | 0 | B |
样本4 | 0 | 0.1 | B |
2.编写k-近邻算法函数
def classify0(inX, dataSet, labels, k):
dataSetSize = dataSet.sha