首页 > 编程语言 >K最近邻算法

K最近邻算法

时间:2023-12-02 15:31:26浏览次数:40  
标签:distance hamburger dest range source 算法 最近 汉堡

汉堡店销售量预测
某汉堡店每天都会做新鲜的汉堡,每天卖出的汉堡个数与天气等因素有关。请根据如下几个特征,用KNN算法预测当天售卖汉堡的个数。
(1)天气指数1~5:1表示天气很差,5表示天气很好。
(2)是否是周末:周末为1,否则为0。
(3)是否有打折活动:1表示有打折,0表示没有打折。

售出汉堡的历史数据表

K最近邻算法_元组

示例:
输入:(依次输入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))

标签:distance,hamburger,dest,range,source,算法,最近,汉堡
From: https://blog.51cto.com/lizhao/8657619

相关文章

  • 二分图最大匹配模板(匈牙利算法)
    二分图最大匹配模板(匈牙利算法)P3386【模板】二分图最大匹配-洛谷|计算机科学教育新生态(luogu.com.cn)structaugment_path{ vector<vector<int>>g; vector<int>pa;//匹配 vector<int>pb; vector<int>vis;//访问 intn,m;//两个点集中的顶......
  • 高斯混合模型:GMM和期望最大化算法的理论和代码实现
    高斯混合模型(gmm)是将数据表示为高斯(正态)分布的混合的统计模型。这些模型可用于识别数据集中的组,并捕获数据分布的复杂、多模态结构。gmm可用于各种机器学习应用,包括聚类、密度估计和模式识别。在本文中,将首先探讨混合模型,重点是高斯混合模型及其基本原理。然后将研究如何使......
  • 51k+ Star!动画图解、一键运行的数据结构与算法教程!
    大家好,我是Java陈序员。我们都知道,《数据结构与算法》——是程序员的必修课。无论是使用什么编程语音,亦或者是前后端开发,都需要修好《数据结构与算法》这门课!在各个互联网大产的面试中,对数据结构和算法的考核乐此不疲。往往《数据结构与算法》学得好的,都能拿到高薪!但是《数......
  • 代码随想录算法训练营第三天 | 203.移除链表元素 707.设计链表 206.反转链表
    LeetCode 203.移除链表元素视频链接:LeetCode203思路:根据链表的性质,将目标值对应的节点保存在一个临时节点中,再重新设置cur下一个节点,再将临时节点进行删除classSolution{public:ListNode*removeElements(ListNode*head,intval){//删除头节点......
  • 【POJ 1144】Network 题解(Tarjan算法求无向图的割点)
    一家电话线公司(TLC)正在建立一个新的电话电缆网络。它们连接由1到N的整数编号的几个位置。没有两个地方的数字相同。这些线路是双向的,总是连接在两个地方,在每一个地方,线路都以电话交换机结束。每个地方都有一个电话交换机。从每个地方可以通过其他地方的线路到达,但不需要直接连接,可......
  • 文心一言 VS 讯飞星火 VS chatgpt (147)-- 算法导论12.2 2题
    二、用go语言,写出TREE-MINIMUM和TREE-MAXIMUM的递归版本。灵捷3.5。文心一言:以下是用Go语言编写的树的最大值和最小值的递归版本代码:packagemainimport("fmt")typeTreeNodestruct{ValintLeft*TreeNodeRight*TreeNode}......
  • Tomasulo算法小结
    总结L.D F6,24(R2)L.D F2,12(R3)MUL.D F0,F2,F4SUB.D F8,F6,F2DIV.D F10,F0,F6ADD.D F6,F8,F2以以上的代码为例,当指令MUL.D即将确认时,保留站、load缓冲器以及寄存器状态表中的内容。(1)保留站的内容当指令MUL.D即将确认,即F0即将写入值时,第1、2、4、6条指令周期短,都......
  • 数据结构与算法之单链表-----黑马程序员(26-35)
    1.链表的概念在计算机科学中,链表是数据元素的线性集合,其每个元素都指向下一个元素,元素储存上并不连续。 创建链表如图所示和相关代码publicclassdanlianbiao{privateNodehead=null;//头部第一个结点privatestaticclassNode{//后面的每个结点intvalue;Nodene......
  • 深入了解动态规划算法
    引言动态规划(DynamicProgramming,DP)是一种解决问题的算法范式,在许多领域中都有着广泛的应用。它的核心思想是将问题分解为子问题,并存储已解决的子问题的解,以避免重复计算,提高效率。动态规划的核心原理动态规划算法的成功建立在两个基本原理上:最优子结构:一个问题的最优解可以由其子......
  • 排序算法值鸡尾酒排序(java)
    一:概述冒泡排序的每一个元素都可以像小气泡一样,根据自身的大小,一点一点地向着数组的一侧移动。算法的每一轮都是从左到右比较元素,进行单向的位置交换的。鸡尾酒排序做了怎样的优化:鸡尾酒排序的元素比较和交换过程是双向的。二:举例子由9个数字组成的无序数列{2,3,4,5,6,7,1,9......