《机器学习实战》K-近邻算法代码解析(1)

from numpy import *   #调用numpy模块

import operator        #调用operator模块

from os import listdir     #调用os模块

 

 

def classify0(inX, dataSet, labels, k):#定义一个有四个参数的函数,四个参数分别是,“用于输入的样本向量”,“数据集”,“标签向量”,“K的大小”

    dataSetSize= dataSet.shape[0] #读取数据集的行数,其中shape[0]是读取数据的行数

    diffMat =tile(inX, (dataSetSize,1)) – dataset#计算输入的样本向量的每个属性与样本集中的每个样本的每个属性的差值。tile(A,reps)函数,是将数组A在维度上进行重复,reps是各个维度的重复次数。这里tile(inX, (dataSetSize,1))就是将inX在行维度上不重复,在列维度上重复dataSetSize次。然后减去dataset即得到差值。

    sqDiffMat =diffMat**2#将刚刚得到的差值的每个分量进行平方运算,diffMat**2是将diffMat里面的每个元素都进行平方运算。

    sqDistances= sqDiffMat.sum(axis=1)#这一步是将上一步平方完后的式子进行按行相加。即得到sqDistances的分量就是用于输入的样本向量与数据集每个样本的欧氏距离的平方。其中.sum(axis=0或者1),axis=0代表按列相加 axis=0代表按行相加。

    distances =sqDistances**0.5 #这一步将欧氏距离的平方进行开方处理,得到distances的分量就是用于输入的样本向量与数据集每个样本的欧氏距离。distances是一个列向量。

   sortedDistIndicies = distances.argsort()    

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值