MachineLearningInAction第二章K-近邻算法

什么是K-近邻算法?

定义:K-近邻算法采用测量不同特征值之间的距离方法进行分类,属于监督学习

(这里的特征值怎么理解,现在我的理解是可以是数值,可以之特征向量;对于数值很好理解,就是单位相同维数相同的一组数据,特征向量同样单位相同(可能不够严谨但是这么有利于理解),距离有很多种,可以是欧式距离,马氏距离等)

 

然后就是创建kNN.py的程序了,

 

from numpy import *
import operator   # 运算符模块

def createDataSet():
    group = array([[1.0, 1.1], [1.0, 1.0], [0.0, 0.0], [0, 0.1]])  #定义array时一定注意()和[]
    labels = ['A', 'A', 'B', 'B']
    return group, labels


def classfy0(inX, dataSet, labels, k):    #这里定义了函数有4个输入  一定注意k值不能大于总类别数-1
    dataSetSize = dataSet.shape[0]    #这里计算出dataSet的行数
    diffMat = tile(inX, (dataSetSize, 1)) - dataSet  # 输入数据inX与有标签数据的差,tile是复制dataSet这么多行
    sqDiffMat = diffMat**2     # 对做差的结果进行平方
    sqDistances = sqDiffMat.sum(axis=1)  #同一行的元素相加  
    distances = sqDistances**0.5    # 这个就很好理解了开方
    sortedDistIndicies = distances.argsort()    #  这是对distances进行排序
    classCount = {}       #   定义一个字典,字典包含key和value
    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]    # 这里选出k个类别数值 取值为0,1,...,k-1   
        classCount[voteIlabel] = classCount.get(voteIlabel, 0) + 1  # 这里很有必要的记录同一类别的个数    
    sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
#  这是https://blog.csdn.net/qq_38669138/article/details/79094478上述程序语句的解释很清楚
    return sortedClassCount[0][0]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

然后就可以运行了

import kNN

group, labels = kNN.createDataSet()

kNN.classify([0., 0.], group, labels, 3)

运行就有结果了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值