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中使用PDB库调试程序
Apr 05 Python
Python开发之快速搭建自动回复微信公众号功能
Apr 22 Python
python框架django基础指南
Sep 08 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
Python基于回溯法子集树模板解决数字组合问题实例
Sep 02 Python
Python时间和字符串转换操作实例分析
Mar 16 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
详解Python的三种拷贝方式
Feb 11 Python
python实现扫雷小游戏
Apr 24 Python
Python urllib库如何添加headers过程解析
Oct 05 Python
Pytorch自定义Dataset和DataLoader去除不存在和空数据的操作
Mar 03 Python
使用python绘制分组对比柱状图
Apr 21 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自定义函数返回多个值
2006/11/26 PHP
php smarty模版引擎中变量操作符及使用方法
2009/12/11 PHP
关于PHP内存溢出问题的解决方法
2013/06/25 PHP
destoon实现公司新闻详细页添加评论功能的方法
2014/07/15 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
PHP学习笔记(三):数据类型转换与常量介绍
2015/04/17 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
关于PHP虚拟主机概念及如何选择稳定的PHP虚拟主机
2018/11/20 PHP
基于PHP实现微信小程序客服消息功能
2019/08/12 PHP
学习ExtJS 访问容器对象
2009/10/07 Javascript
Iframe 自适应高度并实时监控高度变化的js代码
2009/10/30 Javascript
JavaScript中yield实用简洁实现方式
2010/06/12 Javascript
javascript天然的迭代器
2010/10/29 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
JQuery加载图片自适应固定大小的DIV
2013/09/12 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
js实现的Easy Tabs选项卡用法实例
2015/09/06 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
2015/09/09 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
浅谈jquery高级方法描述与应用
2016/10/04 Javascript
微信小程序 网络请求(post请求,get请求)
2017/01/17 Javascript
浅谈 vue 中的 watcher
2017/12/04 Javascript
JS+H5 Canvas实现时钟效果
2018/07/20 Javascript
JavaScript中this用法学习笔记
2019/03/17 Javascript
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
python 按照固定长度分割字符串的方法小结
2018/04/30 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
Python内置类型性能分析过程实例
2020/01/29 Python
Django更新models数据库结构步骤
2020/04/01 Python
解决tensorflow/keras时出现数组维度不匹配问题
2020/06/29 Python
德国内衣、泳装和睡衣网上商店:Bigsize Dessous
2018/07/09 全球购物
生物技术研究生自荐信
2013/11/12 职场文书
创意活动策划书
2014/01/15 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
R9700摩机记
2022/04/05 无线电