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: 机器学习是个很有趣的领域,只要下定决心,你就能很深入地了解它。 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。 您可能感兴趣的文章:
(编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
