(1):list的排序算法:

参考链接:http://blog.csdn.net/horin153/article/details/7076321

示例: DisListSorted = sorted(DisList, key = lambda DisList: DisList[1], reverse =False) 使用lambda函数,利用元素索引作为key;

在 Python 中, 当需要对一个 list 排序时, 一般可以用 list.sort() 或者 sorted(iterable[, cmp[, key[, reverse]]]).
其中:
cmp(e1, e2) 是带两个参数的比较函数, 返回值: 负数: e1 < e2, 0: e1 == e2, 正数: e1 > e2. 默认为 None, 即用内建的比较函数;
key 是带一个参数的函数, 用来为每个元素提取比较值. 默认为 None, 即直接比较每个元素;
reverse 是一个布尔值, 表示是否反转比较结果.。reverse =False 代表从小到大...

(2):几种排序算法:

1, 通常, key 和 reverse 比 cmp 快很多, 因为对每个元素它们只处理一次; 而 cmp 会处理多次.
也就是说, 同等情况下, 写 key 函数比写 cmp 函数要高效很多.2, 对一些貌似比较复杂的排序, 也是不需要写 cmp 函数的, 举例如下:
>>> students = [('john', 'A', 15), ('jane', 'B', 12), ('dave', 'B', 10),]用元素索引做 key:
>>> sorted(students, key=lambda student: student[2])   # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]用元素已经命名的属性做 key:
>>> sorted(students, key=lambda student: student.age)   # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]用 operator 函数来加快速度, 上面两个排序等价于:
>>> from operator import itemgetter, attrgetter
>>> sorted(students, key=itemgetter(2))
>>> sorted(students, key=attrgetter('age'))用 operator 函数进行多级排序, 这个就是比较复杂的应用. 按我以前的理解, 是一定要写个定制的 cmp 函数的. 现在看来, 以前真的够笨.
# sort by grade then by age
>>> sorted(students, key=itemgetter(1,2))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]
>>> sorted(students, key=attrgetter('grade', 'age'))
[('john', 'A', 15), ('dave', 'B', 10), ('jane', 'B', 12)]3, 根据字典值排序
>>> d = {'a':2, 'b':23, 'c':5, 'd':17, 'e':1}#1, 返回 pair 对:
from operator import itemgetter
>>> sorted(d.iteritems(), key=itemgetter(1), reverse=True)
[('b', 23), ('d', 17), ('c', 5), ('a', 2), ('e', 1)]#2, 仅返回 keys:
>>> sorted(d, key=d.__getitem__, reverse=True)
['b', 'd', 'c', 'a', 'e']4, sorted() 会返回一个新的已经排好序的 list.
list.sort() 是就地排序, 以节约空间, 当然就不会返回一个排好序的新的 list 了. 这对大的 list 排序是有空间优势的.

(3):KNN算法实例:

<p>#  DataMatrix 为向量数组 列表
</p><p> def creatDataSetLabel(DataMatrix, LabelVec):Classifier ={}if len (LabelVec) !=len (DataMatrix):return Classifierfor idx in range(len (LabelVec)):Classifier[LabelVec[idx] ]  = DataMatrix[idx]        return Classifier</p>
<p>#filename 为文件夹
</p><p>def   trainClassifier(filename):DataMatrix= creatDataSet(filename)LabelNum  = len(DataMatrix )LabelVec  = creatLabel(LabelNum)Classifier= creatDataSetLabel(DataMatrix,LabelVec)return Classifier
</p><p>
</p><p>#输入向量,返回k近邻!
</p><p>def classify(Classifier, Feature ,K):if len(Feature) != len(Classifier[0] ):return 0kNear = []Distance ={}# similarityfor i in range(len(Classifier) ):DisVec = Classifier[i] - FeatureDisMat = DisVec **2Distance[i] = DisMat.sum()DisList =[]for key in Distance:DisList.append([key, Distance[key] ])</p><p>DisListSorted = sorted(DisList, key = lambda DisList: DisList[1], reverse =False) #排序 距离for i in range(K):kNear.append(DisListSorted[i] ) return kNear
</p>

ML一:python的KNN算法相关推荐

  1. Python实现kNN算法

    Python实现kNN算法 1. 原理 k-最近邻: kNN(k-NearestNeighbor)分类算法机器学习中最简单的分类方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用 ...

  2. Python实现KNN算法(鸢尾花集)

    不同颜色的鸢尾花花语不尽相同,蓝色鸢尾花语是精致的美丽,红色鸢尾花的花语代表着热情.适应力强.紫蓝色鸢尾花花语代表着好消息.想念你.黄色鸢尾花的花语代表着友谊永固.热情开朗,白色鸢尾花花语代表着纯真. ...

  3. 用Python实现KNN算法(从原理到代码的实现)

    用Python实现KNN算法(从原理到代码的实现) 环境 1.Pycharm 2.python3.6 声明:本栏的所有文章皆为本人学习时所做笔记而整理成篇,转载需授权且需注明文章来源,禁止商业用途,仅 ...

  4. python实现KNN算法在电影分类中的应用

    使用python实现KNN算法在电影分类中的应用 代码如下: import numpy as np import operator""" 使用KNN算法对电影进行分类 K ...

  5. 原生Python实现KNN算法,并用鸢尾花(iris)数据集测试

    用原生python语法实现K近邻算法,了解K近邻法的实际操作内核,并用自带鸢尾花的集合验证K近邻算法,并掌握运用散点图的绘制 先对KNN算法做了解: 源代码获取: https://github.com ...

  6. python的knn算法list_机器学习实战学习笔记1——KNN算法

    一.KNN算法概述: 1.KNN算法的工作原理是: (1)存在一个训练样本集,并且知道样本集中每一数据与所属分类的对应关系,即每个数据都存在分类标签. (2)若此时输入不带标签的新数据之后,将新数据的 ...

  7. 用python实现KNN算法对鸢尾花的分类

    一.KNN算法 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接 ...

  8. 手写体识别python,python使用KNN算法手写体识别

    本文实例为大家分享了用KNN算法手写体识别的具体代码,供大家参考,具体内容如下 #!/usr/bin/python #coding:utf-8 import numpy as np import op ...

  9. python实现KNN算法并可视化展示

    话不多说,直接上代码,本代码采用的是鸢尾花数据集,来实现KNN算法 import matplotlib.pyplot as plt import matplotlib as mpl import pa ...

最新文章

  1. Linux下远程访问mysql数据库
  2. 【新品发布】山海软件生产线pspl,包含了一个开源的混淆器
  3. RocketMQ源码分析之RocketMQ事务消息实现原下篇(事务提交或回滚)
  4. foreach和while的区别(编译之后)_一文了解解释型语言和编译型语言之区别
  5. GraphQL入门之GraphQL查询的规范
  6. 漫步数理统计二十八——混合分布
  7. 野火开发版屏幕_鸿蒙2.0手机开发者版发布,华为多数自研设备明年升级鸿蒙
  8. 用EZBOOT制作多个gho文件的安装盘
  9. Caffe学习:Loss
  10. 计算机系统结构cache,大连理工大学计算机系统结构实验 实验四
  11. 微信小程序--云开发静态网站h5跳小程序
  12. 网络安全认证与加密协议算法整合
  13. 找到组织了---perftest工作室 TIB工作室
  14. WPF 开机一键启动程序V1.0【原创】
  15. 想知道手机配音软件哪个好用吗?一起来看看吧
  16. 终于还是对闲鱼下手了。闲鱼爬虫,idlefish spider来了
  17. 英伟达哭晕在厕所,4090Ti显卡被春晚“首发”
  18. 计算机xp系统怎么录音,XP系统电脑怎么录音? - KK录像机
  19. 安卓系统加速_安卓手机这样优化一下,流畅度至少能提升30%
  20. Unity中的布料系统

热门文章

  1. 第三课——MFC编程
  2. Linux中Buffer和Cache的区别
  3. 关于purge master logs的一个小实验
  4. 再谈Docker,微服务的场景化应用
  5. PgSQL · 最佳实践 · CPU满问题处理
  6. 洛谷P1082 同余方程 数论
  7. Linux下Openssl的安装全过程
  8. 第二次冲刺——第7天
  9. 来兄弟连学习的经历和感受
  10. order by居然不能直接在union子句中使用