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选择排序、冒泡排序、合并排序代码实例
Apr 10 Python
Python的网络编程库Gevent的安装及使用技巧
Jun 24 Python
python的多重继承的理解
Aug 06 Python
详谈Python高阶函数与函数装饰器(推荐)
Sep 30 Python
Python实现利用163邮箱远程关电脑脚本
Feb 22 Python
浅析python中的迭代与迭代对象
Oct 08 Python
从0开始的Python学习016异常
Apr 08 Python
python+selenium实现自动化百度搜索关键词
Jun 03 Python
在python plt图表中文字大小调节的方法
Jul 08 Python
Tensorflow实现酸奶销量预测分析
Jul 19 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 Python
使用python+pygame开发消消乐游戏附完整源码
Jun 10 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
thinkPHP的Html模板标签使用方法
2012/11/13 PHP
PHP的全局错误处理详解
2016/04/25 PHP
Laravel配置全局公共函数的方法步骤
2019/05/09 PHP
laravel-admin表单提交隐藏一些数据,回调时获取数据的方法
2019/10/08 PHP
Javascript中Eval函数的使用说明
2008/10/11 Javascript
写出更好的JavaScript程序之undefined篇(中)
2009/11/23 Javascript
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
js获取class的所有元素
2013/03/28 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
jquery代码实现简单的随机图片瀑布流效果
2015/04/20 Javascript
JS实现简单的图书馆享元模式实例
2015/06/30 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
2016/01/08 Javascript
Vue.js每天必学之过滤器与自定义过滤器
2016/09/07 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
以v-model与promise两种方式实现vue弹窗组件
2018/05/21 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
解决Layui数据表格的宽高问题
2019/09/28 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
低版本中Python除法运算小技巧
2015/04/05 Python
python爬取w3shcool的JQuery课程并且保存到本地
2017/04/06 Python
Python numpy生成矩阵、串联矩阵代码分享
2017/12/04 Python
Python 余弦相似度与皮尔逊相关系数 计算实例
2019/12/23 Python
python代码实现TSNE降维数据可视化教程
2020/02/28 Python
彻底搞懂 python 中文乱码问题(深入分析)
2020/02/28 Python
Pytorch框架实现mnist手写库识别(与tensorflow对比)
2020/07/20 Python
丝芙兰加拿大官方网站:SEPHORA加拿大
2018/11/20 全球购物
英国户外装备商店:Ultimate Outdoors
2019/05/07 全球购物
幼儿园教师演讲稿
2014/05/06 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
写给妈妈的感谢信
2015/01/22 职场文书
邀请书模板
2015/02/02 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS