python实现K最近邻算法


Posted in Python onJanuary 29, 2018

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表示天气非常好);
b. 是不是周末或节假日(周末或节假日为1,否则为0);
c. 有没有活动(1表示有,0表示没有)。

已知

historyA(5, 1, 0) = 300
historyB(3, 1, 1) = 225
historyC(1, 1, 0) = 75
historyD(4, 0, 1) = 200
historyE(4, 0, 0) = 150
historyF(2, 0, 0) = 50

回归:周末,天气不错

Now(4, 1, 0) = ?

#! /usr/bin/env python3
# -*- coding: utf-8 -*-
# fileName : KNNdistance.py
# author : zoujiameng@aliyun.com.cn

if __name__ == "__main__":

 history = {}
 history[5, 1, 0] = 300
 history[3, 1, 1] = 225
 history[1, 1, 0] = 75
 history[4, 0, 1] = 200
 history[4, 0, 0] = 150
 history[2, 0, 0] = 50

 dest = [4, 1, 0]
 source = []
 for i in history:
  source.append(i)
 print(source)

 from KNNdistance import KDistance
 K = 4
 locate = KDistance(K, dest, source)
 avg = 0
 for i in range(len(locate)):
  avg+=history[locate[i]]
 avg/=K
 print("回归结果:今天应该烤%d个面包" % round(avg))

KNN算法:

  • 创建分类系统
  • 分类(分组),特征抽取(得到相似程度)
  • 回归,即预测数值
  • KNN算法真的是很有用,堪称你进入神奇的机器学习领域的领路人!机器学习旨在让计算机更聪明。你见过一个机器学习的例子:创建推荐系统。
  • OCR指的是光学字符识别 (optical character recognition),这意味着你可拍摄印刷页面的照片,计算机将自动识别出其中的文字。Google使用OCR来实现图书数字化。
  • 一般而言,OCR算法提取线段、点和曲线等特征。
  • OCR中的特征提取要复杂得多,但再复杂的技术也是基于KNN等简单理念的。这些理念也可用于语音识别和人脸识别。你将照片上传到Facebook时,它有时候能够自动标出照片中的人物,这是机器学习在发挥作用!
  • OCR的第一步是查看大量的数字图像并提取特征,这被称为训练(training)。大多数机器学习算法都包含训练的步骤:要让计算机完成任务,必须先训练它。

samples:

a. 垃圾邮件过滤器, 使用一种简单算法——朴素贝叶斯分类器(Naive Bayes classifier)
b. 预测股票市场, 使用机器学习来预测股票市场的涨跌真的很难。对于股票市场,如何挑选合适的特征呢?股票昨天涨了,今天也会涨,这样的特征合适吗?又或者每年五月份股票市场都以绿盘报收,这样的预测可行吗?在根据以往的数据来预测未来方面,没有万无一失的方法。未来很难预测,由于涉及的变量太多,这几乎是不可能完成的任务。

conclude:

机器学习是个很有趣的领域,只要下定决心,你就能很深入地了解它。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
Apr 25 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
May 26 Python
Python中Selenium模拟JQuery滑动解锁实例
Jul 26 Python
python写入文件自动换行问题的方法
Jul 05 Python
Python-接口开发入门解析
Aug 01 Python
django实现支付宝支付实例讲解
Oct 17 Python
基于Python解密仿射密码
Oct 21 Python
Python调用Windows命令打印文件
Feb 07 Python
openCV提取图像中的矩形区域
Jul 21 Python
详解查看Python解释器路径的两种方式
Oct 15 Python
Pytorch 中的optimizer使用说明
Mar 03 Python
python实现会员信息管理系统(List)
Mar 18 Python
python简单实现操作Mysql数据库
Jan 29 #Python
Django框架教程之正则表达式URL误区详解
Jan 28 #Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 #Python
python中的随机函数小结
Jan 27 #Python
python中的随机函数random的用法示例
Jan 27 #Python
Python闭包之返回函数的函数用法示例
Jan 27 #Python
详解如何利用Cython为Python代码加速
Jan 27 #Python
You might like
神族 PROTOSS 概述
2020/03/14 星际争霸
DIY一个适配电脑声卡的动圈话筒放大器
2021/03/02 无线电
PHP Google的translate API代码
2008/12/10 PHP
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
PHP循环函数使用介绍之PHP基础入门教程
2013/09/21 PHP
PHP开发注意事项总结
2015/02/04 PHP
Codeigniter实现发送带附件的邮件
2015/03/19 PHP
php事件驱动化设计详解
2016/11/10 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
用Javascript实现Sleep暂停功能代码
2010/09/03 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
js 获取经纬度的实现方法
2016/06/20 Javascript
jQuery实现的选择商品飞入文本框动画效果完整实例
2016/08/10 Javascript
AngularJS控制器之间的通信方式详解
2016/11/03 Javascript
jQuery无刷新上传之uploadify简单代码
2017/01/17 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
JS实现验证码倒计时的注册页面
2018/01/02 Javascript
jQuery实现的监听导航滚动置顶状态功能示例
2018/07/23 jQuery
在小程序中使用canvas的方法示例
2018/09/17 Javascript
JSON字符串操作移除空串更改key/value的介绍
2019/01/05 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
详解vue 在移动端体验上的优化解决方案
2019/05/20 Javascript
vue操作dom元素的3种方法示例
2020/09/20 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
2021/01/19 Javascript
Flask web开发处理POST请求实现(登录案例)
2018/07/26 Python
Python读取指定日期邮件的实例
2019/02/01 Python
Python编写带选项的命令行程序方法
2019/08/13 Python
Python中*args和**kwargs的区别详解
2019/09/17 Python
利用python爬取有道词典的方法
2020/12/08 Python
查找廉价航班和发现新目的地:Kiwi.com
2019/02/25 全球购物
营销总监岗位职责范本
2014/02/26 职场文书
运动与健康自我评价
2015/03/09 职场文书
恰同学少年观后感
2015/06/08 职场文书
校园广播稿范文
2015/08/19 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书