python实现K最近邻算法
KNN核心算法函数,具体内容如下 #! /usr/bin/env python3 # -*- coding: utf-8 -*- # fileName : KNNdistance.py # author : zoujiameng@aliyun.com.cn import math def getMaxLocate(target): # 查找target中最大值的locate maxValue = float("-inFinIty") for i in range(len(target)): if maxValue < target[i]: maxValue = target[i] flag = i return flag def KDistance(K,dest,source): destlen = len(dest) source1len = len(source[1]) sourcelen = len(source) KNN = [] locate = source # 准备从source中剔除N-K个最大值 if destlen == source1len: for i in range(sourcelen): delta = 0 for j in range(source1len):# 毕达哥拉斯公式 delta += (dest[j] - source[i][j])*(dest[j] - source[i][j]) KNN.append(math.sqrt(delta)) for k in range(sourcelen,K,-1): flag = getMaxLocate(KNN) #print("%s 最大元素位置为%d" % (KNN,flag)) KNN.remove(KNN[flag]); locate.remove(locate[flag])# 移除对应位置的元素 #print(locate) return locate # 返回最终K个最接近的元素 else: return None 假设你在伯克利开个小小的面包店,每天都做新鲜面包,需要根据如下一组特征预测当天该烤多少条面包: a. 天气指数1~5(1表示天气很糟,5表示天气非常好); 已知 historyA(5,1,0) = 300 回归:周末,天气不错 Now(4,0) = ? #! /usr/bin/env python3 # -*- coding: utf-8 -*- # fileName : KNNdistance.py # author : zoujiameng@aliyun.com.cn if __name__ == "__main__": history = {} history[5,0] = 300 history[3,1] = 225 history[1,0] = 75 history[4,1] = 200 history[4,0] = 150 history[2,0] = 50 dest = [4,0] source = [] for i in history: source.append(i) print(source) from KNNdistance import KDistance K = 4 locate = KDistance(K,source) avg = 0 for i in range(len(locate)): avg+=history[locate[i]] avg/=K print("回归结果:今天应该烤%d个面包" % round(avg)) KNN算法:
samples: a. 垃圾邮件过滤器,使用一种简单算法――朴素贝叶斯分类器(Naive Bayes classifier) conclude: 机器学习是个很有趣的领域,只要下定决心,你就能很深入地了解它。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 您可能感兴趣的文章:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |