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 多进程通信模块的简单实现
Feb 20 Python
Python中函数的用法实例教程
Sep 08 Python
Python 变量类型详解
Oct 10 Python
3分钟学会一个Python小技巧
Nov 23 Python
pandas通过字典生成dataframe的方法步骤
Jul 23 Python
Python面向对象原理与基础语法详解
Jan 02 Python
基于python实现文件加密功能
Jan 06 Python
使用Python打造一款间谍程序的流程分析
Feb 21 Python
Django+python服务器部署与环境部署教程详解
Mar 30 Python
详解pandas.DataFrame.plot() 画图函数
Jun 14 Python
Python Request类源码实现方法及原理解析
Aug 17 Python
python输入中文的实例方法
Sep 14 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
php反射应用示例
2014/02/25 PHP
php+ajax实现无刷新数据分页的办法
2015/11/02 PHP
PHP MVC框架路由学习笔记
2016/03/02 PHP
PHP实现适用于自定义的验证码类
2016/06/15 PHP
老生常谈PHP面向对象之命令模式(必看篇)
2017/05/24 PHP
解决form中action属性后面?传递参数 获取不到的问题
2017/07/21 PHP
javascript实现 在光标处插入指定内容
2007/05/25 Javascript
JQuery UI皮肤定制
2009/07/27 Javascript
PHP abstract与interface之间的区别
2013/11/11 Javascript
jQuery事件绑定和委托实例
2014/11/25 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
javascript面向对象之共享成员属性与方法及prototype关键字用法
2015/01/13 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
详解node-ccap模块生成captcha验证码
2017/07/01 Javascript
Vuex的初探与实战小结
2018/11/26 Javascript
解决vue跨域axios异步通信问题
2019/04/17 Javascript
vue-cli3+typescript新建一个项目的思路分析
2019/08/06 Javascript
js针对图片加载失败的处理方法分析
2019/08/24 Javascript
通过javascript实现扫雷游戏代码实例
2020/02/09 Javascript
[05:02]2014DOTA2 TI中国区预选赛精彩TOPPLAY第三弹
2014/06/25 DOTA
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
python通过txt文件批量安装依赖包的实现步骤
2019/08/13 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
python3 中时间戳、时间、日期的转换和加减操作
2020/07/14 Python
python 获取谷歌浏览器保存的密码
2021/01/06 Python
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
详解如何在css中引入自定义字体(font-face)
2018/05/17 HTML / CSS
精致的手工皮鞋:Shoe Embassy
2019/11/08 全球购物
天游软件面试
2013/11/23 面试题
品牌推广策划方案
2014/05/28 职场文书
转让协议书范本
2014/09/13 职场文书
2015大学迎新晚会主持词
2015/07/16 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
SpringBoot2 参数管理实践之入参出参与校验的方式
2021/06/16 Java/Android