首发于 Char_Slash
KNN算法用于回归预测及其代码实现

KNN算法用于回归预测及其代码实现

实际上,KNN算法是最早被使用的回归类的算法。在机器学习流行之前,在数据预测领域大都是使用K近邻算法来作回归预测。其原理与KNN算法用于分类是一致的:通过一种距离度量关系(通常为曼哈顿距离或欧几里得距离)寻找与待预测点相近的K个点,根据这K个点进行回归或是分类的预测。不同的是,分类任务中使用投票的方式,即待预测点的类别与K个点中数量最多的样本类别一致;在回归任务中,待预测点的标签由K个点标签的平均值决定。


今天想分享的是KNN算法用于回归预测的代码实现(非调用sk-learn库)。

下面是实现KNN算法的代码:


下面是距离度量函数的代码,这里提供了l1、l2两种度量方式:


下面对KNN算法进行测试,使用的数据是由函数 z=1 + sin(2*x+ 3*y) / (3.5 + sin(x- y))均匀生成,使用留出法提取20%的数据作为待预测点,使用r2作为评价指标。

选择距离度量方式为欧几里得距离,得到r2与k值选择图像如下:

可以看到,当k=3时,r2值已经达到0.998左右,已经非常接近1,预测效果非常接近真实值。当k=6时达到r2的最大值。


因为KNN算法使用的是距离最近的几个值的平均值进行预测,因此只有当近邻足够接近待预测点时才可以达到最好的预测效果。假如在某个极端情况下,带预测点的真实标签为1.0,而通过距离度量得到的近邻标签分别为100.0、100.1、100.2,那此时的预测偏差就非常大了。换句话说,在回归任务中,要求数据集中样本点数量足够大,连续性较好才可以达到较好的预测效果。但当样本点数量足够大时,因为每次预测都需要计算带预测点与全部样本点的距离,又会出现计算量巨大的原因,导致运行时间特别长。

近来出现的如kd-tree、ball-tree等优化算法将运行时间长的缺点解决了。

装修网装修一平米4000贵公装衣服室内装修卧室衣柜北京洗手间装修装修佣金协议海口价格装修百色口碑好的装修公司装修简约大方奢华创艺装修装饰芜湖普通家装东莞家装报价佛山精装修报价简装租房子90平米装修费用外墙装饰百叶湖南耒阳装修公司办公室装修开工仪式客厅不大怎么装修公装装修装饰公司2020家装墙面流行什么颜色毛坯房简装程序饭店装修厨房家庭水电装修扬州龙杰装饰实验室建筑装修3平方卫生间如何装修房屋简装家装木龙骨吊顶优质装修无吊顶电视背景墙简装香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声汪小菲曝离婚始末卫健委通报少年有偿捐血浆16次猝死单亲妈妈陷入热恋 14岁儿子报警雅江山火三名扑火人员牺牲系谣言手机成瘾是影响睡眠质量重要因素男子被猫抓伤后确诊“猫抓病”中国拥有亿元资产的家庭达13.3万户高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了男孩8年未见母亲被告知被遗忘张家界的山上“长”满了韩国人?倪萍分享减重40斤方法许家印被限制高消费网友洛杉矶偶遇贾玲何赛飞追着代拍打小米汽车超级工厂正式揭幕男子被流浪猫绊倒 投喂者赔24万沉迷短剧的人就像掉进了杀猪盘特朗普无法缴纳4.54亿美元罚金周杰伦一审败诉网易杨倩无缘巴黎奥运专访95后高颜值猪保姆德国打算提及普京时仅用姓名西双版纳热带植物园回应蜉蝣大爆发七年后宇文玥被薅头发捞上岸房客欠租失踪 房东直发愁“重生之我在北大当嫡校长”校方回应护栏损坏小学生课间坠楼当地回应沈阳致3死车祸车主疑毒驾事业单位女子向同事水杯投不明物质路边卖淀粉肠阿姨主动出示声明书黑马情侣提车了奥巴马现身唐宁街 黑色着装引猜测老人退休金被冒领16年 金额超20万张立群任西安交通大学校长王树国卸任西安交大校长 师生送别西藏招商引资投资者子女可当地高考胖东来员工每周单休无小长假兔狲“狲大娘”因病死亡外国人感慨凌晨的中国很安全恒大被罚41.75亿到底怎么缴考生莫言也上北大硕士复试名单了专家建议不必谈骨泥色变“开封王婆”爆火:促成四五十对测试车高速逃费 小米:已补缴天水麻辣烫把捣辣椒大爷累坏了

装修网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化