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使用numpy实现BP神经网络
Mar 10 Python
python ddt实现数据驱动
Mar 14 Python
python中的二维列表实例详解
Jun 19 Python
详解django自定义中间件处理
Nov 21 Python
修改python plot折线图的坐标轴刻度方法
Dec 13 Python
Django之创建引擎索引报错及解决详解
Jul 17 Python
基于python实现从尾到头打印链表
Nov 02 Python
python中对二维列表中一维列表的调用方法
Jun 07 Python
python有几个版本
Jun 17 Python
Python 实现一个简单的web服务器
Jan 03 Python
Python3 + Appium + 安卓模拟器实现APP自动化测试并生成测试报告
Jan 27 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中文字母数字验证码实现代码
2008/04/25 PHP
PHP操作XML作为数据库的类
2010/12/19 PHP
wordpress自定义url参数实现路由功能的代码示例
2013/11/28 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
使用Jquery来实现可以输入值的下拉选单 雏型
2011/12/06 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
JavaScript Math.floor方法(对数值向下取整)
2015/01/09 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
JS+CSS实现带小三角指引的滑动门效果
2015/09/22 Javascript
JS数组排序技巧汇总(冒泡、sort、快速、希尔等排序)
2015/11/24 Javascript
js重写方法的简单实现
2016/07/10 Javascript
JS获取鼠标坐标并且根据鼠标位置不同弹出不同内容
2017/06/12 Javascript
nodeJS(express4.x)+vue(vue-cli)构建前后端分离实例(带跨域)
2017/07/05 NodeJs
深入浅析Vue.js计算属性和侦听器
2018/05/05 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
详解基于 Node.js 的轻量级云函数功能实现
2019/07/08 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
Python中类型关系和继承关系实例详解
2015/05/25 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
Python统计一个字符串中每个字符出现了多少次的方法【字符串转换为列表再统计】
2019/05/05 Python
Python实现隐马尔可夫模型的前向后向算法的示例代码
2019/12/31 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
美国领先的在线邮轮旅游公司:CruiseDirect
2018/06/07 全球购物
时尚设计师手表:The Watch Cabin
2018/10/06 全球购物
菲律宾优惠券网站:MetroDeal
2019/04/12 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
先进工作者获奖感言
2014/02/08 职场文书
小学语文教学反思
2014/02/10 职场文书
消防应急演练方案
2014/02/12 职场文书
手机银行营销方案
2014/03/14 职场文书
会议主持词
2014/03/17 职场文书
教育基金募捐倡议书
2014/05/14 职场文书
绿色小区申报材料
2014/08/22 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
《当代神农氏》教学反思
2016/02/23 职场文书