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的Cookie.py模块支持冒号做key的方法
Dec 28 Python
使用pdb模块调试Python程序实例
Jun 02 Python
使用python实现rsa算法代码
Feb 17 Python
python如何为被装饰的函数保留元数据
Mar 21 Python
Sanic框架异常处理与中间件操作实例分析
Jul 16 Python
python绘制评估优化算法性能的测试函数
Jun 25 Python
pandas 使用均值填充缺失值列的小技巧分享
Jul 04 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
Aug 12 Python
基于python分析你的上网行为 看看你平时上网都在干嘛
Aug 13 Python
python-numpy-指数分布实例详解
Dec 07 Python
Python基于locals返回作用域字典
Oct 17 Python
python文本处理的方案(结巴分词并去除符号)
May 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中的CMS的涵义
2007/03/11 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
php中删除、清空session的方式总结
2015/10/09 PHP
PHP单例模式是什么 php实现单例模式的方法
2016/05/14 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
神奇的代码 通杀各种网站-可随意修改复制页面内容
2008/07/17 Javascript
解决jquery .ajax 在IE下卡死问题的解决方法
2009/10/26 Javascript
Javascript 判断客户端浏览器类型代码
2010/03/01 Javascript
Node.js编码规范
2014/07/14 Javascript
使用jQuery和Bootstrap实现多层、自适应模态窗口
2014/12/22 Javascript
浅谈几种常用的JS类定义方法
2016/06/08 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
ES6模板字符串和标签模板的应用实例分析
2019/06/25 Javascript
Jquery ajax书写方法代码实例解析
2020/06/12 jQuery
python 随机数生成的代码的详细分析
2011/05/15 Python
python logging 日志轮转文件不删除问题的解决方法
2016/08/02 Python
python导入csv文件出现SyntaxError问题分析
2017/12/15 Python
详解python之协程gevent模块
2018/06/14 Python
基于python实现KNN分类算法
2020/04/23 Python
解决python打不开文件(文件不存在)的问题
2019/02/18 Python
详解Python给照片换底色(蓝底换红底)
2019/03/22 Python
Pytorch实验常用代码段汇总
2020/11/19 Python
瑞典廉价机票预订网站:Seat24
2018/06/19 全球购物
Myprotein瑞士官方网站:运动营养和健身网上商店
2019/09/25 全球购物
写好自荐信要注意的问题
2013/11/10 职场文书
超市总经理岗位职责
2014/02/02 职场文书
小学生暑假感言
2014/02/06 职场文书
中学教师自我鉴定
2014/02/07 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
2015年控辍保学工作总结
2015/05/18 职场文书
辩护意见书
2015/06/04 职场文书
2019年公司快递收发管理制度模板
2019/11/20 职场文书
nginx容器方式反向代理实战
2022/04/18 Servers
mysql 索引的数据结构为什么要采用B+树
2022/04/26 MySQL
delete in子查询不走索引问题分析
2022/07/07 MySQL