KNN

from numpy import *
import operator


def create_datas():
    datasets = array([[1, 0], [0, 1], [0, 0], [1, 1], [2, 2]])
    labels = ['A', 'A', 'A', 'B', 'B']
    return datasets, labels


def KNN_algorithm(x, datas, labels, k):
    print('x=', x)
    tmp = tile(x, (datas.shape[0], 1))
    print('res=\n', tmp)
    diffMax = datas - tmp
    print('diffMax=\n', diffMax)
    powMax = diffMax ** 2
    print('powMax=\n', powMax)
    sumPowMax = powMax.sum(axis=1)
    print('sumPowMax=\n', sumPowMax)
    sqrtMax = sumPowMax ** 0.5
    print('sqrtMax=\n', sqrtMax)
    sortMat = sqrtMax.argsort()
    print('sortMat=\n', sortMat)
    countMat = {}
    for key in range(k):
        print('i = ', sortMat[key])
        print('label = ', labels[sortMat[key]])
        if labels[sortMat[key]] in countMat.keys():
            countMat[labels[sortMat[key]]] += 1
        else:
            countMat[labels[sortMat[key]]] = 1
    sortedResult = sorted(countMat.items(), key=operator.itemgetter(1), reverse=True)
    print('sortedResult=\n', sortedResult)
    return sortedResult



def domain():
    datas, labels = create_datas()
    print('datas=\n', datas)
    print('labels=', labels)
    res = KNN_algorithm([1, 2], datas, labels, 3)
    print('res = ', res[0])


if __name__ == '__main__':
    domain()

欧式距离:在这里插入图片描述

其算法的描述为:

1)计算测试数据与各个训练数据之间的距离;

2)按照距离的递增关系进行排序;

3)选取距离最小的K个点;

4)确定前K个点所在类别的出现频率;

5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值