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列表与元组详解实例
Nov 01 Python
Android应用开发中Action bar编写的入门教程
Feb 26 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
Django基础之Model操作步骤(介绍)
May 27 Python
Python使用filetype精确判断文件类型
Jul 02 Python
Python实现登录接口的示例代码
Jul 21 Python
Django查询数据库的性能优化示例代码
Sep 24 Python
使用Python进行QQ批量登录的实例代码
Jun 11 Python
Python如何基于rsa模块实现非对称加密与解密
Jan 03 Python
Python使用monkey.patch_all()解决协程阻塞问题
Apr 15 Python
Python3+Django get/post请求实现教程详解
Feb 16 Python
Python爬取网站图片并保存的实现示例
Feb 26 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调用Java对象的方法
2006/10/09 PHP
通过对服务器端特性的配置加强php的安全
2006/10/09 PHP
如何在PHP中使用Oracle数据库(6)
2006/10/09 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
jquery validate poshytip 自定义样式
2012/11/26 Javascript
JQuery 在线引用及测试引用是否成功
2014/06/24 Javascript
详解jQuery Mobile自定义标签
2016/01/06 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
Bootstrap Table表格一直加载(load)不了数据的快速解决方法
2016/09/17 Javascript
jQuery表单元素选择器代码实例
2017/02/06 Javascript
jQuery 表单序列化实例代码
2017/06/11 jQuery
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
JavaScript调用模式与this关键字绑定的关系
2018/04/21 Javascript
pm2启动ssr失败的解决方法
2019/06/29 Javascript
D3.js 实现带伸缩时间轴拓扑图的示例代码
2020/01/20 Javascript
基于vue hash模式微信分享#号的解决
2020/09/07 Javascript
ES6 十大特性简介
2020/12/09 Javascript
python中enumerate函数用法实例分析
2015/05/20 Python
在Python中通过threading模块定义和调用线程的方法
2016/07/12 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
python爱心表白 每天都是浪漫七夕!
2018/08/18 Python
Tensorflow轻松实现XOR运算的方式
2020/02/03 Python
python import 上级目录的导入
2020/11/03 Python
喜诗官方在线巧克力店:See’s Candies
2017/01/01 全球购物
Dillard’s百货官网:Dillards.com
2018/05/26 全球购物
公司面试感谢信
2014/02/01 职场文书
生物制药专业自我鉴定
2014/02/19 职场文书
早会主持词
2014/03/17 职场文书
工伤赔偿协议书范本
2014/04/15 职场文书
毕业实习指导教师评语
2014/12/31 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书
七年级之开学家长寄语35句
2019/09/05 职场文书
创业计划书之熟食店
2019/10/16 职场文书
html2 canvas svg不能识别的解决方案
2021/06/03 HTML / CSS
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android