注明:此文的代码源于《机器学习实战》。注释为个人为学习而添加,仅供参考。
概述:利用矩阵计算距离
步骤:1.得到训练集矩阵和对应的标签 ;
2. 将每个变量集复制和训练集矩阵同结构的矩阵;
3. 变量集矩阵和训练集矩阵相减,结果中每个元素计算2次幂之后,再按行对元素进行求和后开2次方,使用的是欧式距离计算公式
4. 对距离最近的前k个标签进行统计,结果最大的也就变量集应该属于的标签
from numpy as np
import operator as op
# 输入已知的训练集和标签:
def createdataset():
group = np.array([1.0,1.1],[1.0,1.0],[0,0],[0,0.1])
labels = ['A','A','B','B']
return group,labels
#计算距离和排序:
def classify0(inx, dataset, labels, k):
datasetsize = dataset.shape(0)
#dataset.shape(0):求矩阵dataset的第一维度(列)的长度
#shape是个numpy函数:作用是求矩阵的行列数或者某个维度/列的长度。如果求某个维度的长度,需要在shape后面加上(维度索引位置),否则是得到矩阵的行列数值。
diffmat = tile(inx, (datasetsize, 1)) - dataset
# tile(inx, (datasetsize