汉堡店销售量预测
某汉堡店每天都会做新鲜的汉堡,每天卖出的汉堡个数与天气等因素有关。请根据如下几个特征,用KNN算法预测当天售卖汉堡的个数。
(1)天气指数1~5:1表示天气很差,5表示天气很好。
(2)是否是周末:周末为1,否则为0。
(3)是否有打折活动:1表示有打折,0表示没有打折。
售出汉堡的历史数据表
示例:
输入:(依次输入K值、历史数据hamburger、目标值dest)
3
{(4,1,0):100, (3,0,1):75, (1,1,0):40, (4,0,1):95, (5,1,0):150, (2,0,1):60}
(4,1,1)
输出:
115
解释:
最接近的元素个数为3。历史数据用字典表示,其中键为元组,依次表示当天的天气指数、是否是周末、是否有打折活动;值为当天售卖汉堡的个数。目标值为元组,依次表示当天的天气指数、是否是周末、是否有打折活动。
import math
def KDistance(K,dest,source):
destLen = len(dest)
sourceLen=len(source)
distance = []
final=source
for i in range(sourceLen):
Sum = 0
for j in range(destLen):
Sum += (dest[j]-source[i][j])*(dest[j]-source[i][j])
distance.append(math.sqrt(Sum))
for n in range(sourceLen-K):
index = distance.index(max(distance))
distance.remove(distance[index])
final.remove(final[index])
return final
def predHamburger(K,hamburger,dest):
source = []
for key in hamburger.keys():
source.append(key)
result=KDistance(K,dest,source)
avg=0
for i in range(len(result)):
avg+=hamburger[result[i]]
return avg // K
K = eval(input())
hamburger=eval(input())
dest=eval(input())
print(predHamburger(K,hamburger,dest))