python算法

【转】python---方法解析顺序MRO(Method Resolution Order)<以及解决类中super方法>

三世轮回 提交于 2019-12-01 23:16:21
【转】python---方法解析顺序MRO(Method Resolution Order)<以及解决类中super方法> MRO了解: 对于支持继承的编程语言来说,其方法(属性)可能定义在当前类,也可能来自于基类,所以在方法调用时就需要对当前类和基类进行搜索以确定方法所在的位置。而搜索的顺序就是所谓的「方法解析顺序」(Method Resolution Order,或MRO)。对于只支持单继承的语言来说,MRO 一般比较简单;而对于 Python 这种支持多继承的语言来说,MRO 就复杂很多。 而具体讨论MRO,我们需要针对不同python版本中的MRO进行解析 经典类:DFS深度优先搜索(Python2.2以前的版本) 新式类:BFS广度优先搜索(Python2.2中提出,在与经典类共存的情况下,是否继承object是他们的区分方式) 新式类C3算法:Python2.3提出(也是现在Python3唯一支持的方式) 对于下面讨论的类的多重继承:我们讨论两种情况。 一:经典类(深度优先搜索) 在经典类中,没有__mro__属性可以去查看MRO的顺序,但是,可以使用inspect模块中getmro方法 import inspect inspect.getmro(类名) (一)正常继承模式 在正常继承模式下,不会引起任何问题 (二)交叉继承模式 缺点 :C类原本是D的子类

Python计算AUC

一世执手 提交于 2019-12-01 18:25:53
AUC(Area under curve)是机器学习常用的二分类评测手段,直接含义是ROC曲线下的面积。另一种解释是:随机抽出一对样本(一个正样本,一个负样本),然后用训练得到的分类器来对这两个样本进行预测,预测得到正样本的概率大于负样本概率的概率。 在有M个正样本,N个负样本的数据集里,利用公式求解: \[ AUC=\frac{\sum_{i \in positiveClass} rank_i-\frac{M(1+M)}{2}}{M*N} \] 在python实现中,相当于使用了计数排序,因为概率是一个小数,我们同时乘以100取整数进行排序(也可以根据精度调整)。在排完序后,我们就可以得到正样本概率大于负样本概率的个数,再加上正样本概率等于负样本概率的个数的一半,除以总共的样本数(M*N),即可得到最终的AUC值。 def AUC(labels,preds,n_bins=100): m = sum(labels) n = len(labels) - m total_case = m * n pos = [0 for _ in range(n_bins)] neg = [0 for _ in range(n_bins)] bin_width = 1.0 / n_bins for i in range(len(labels)): nth_bin = int(preds[i]/bin

python起步-2

心已入冬 提交于 2019-12-01 17:07:57
仅供学习使用 练习9 绘图 身高X,体重Y 身高 体重 152 51 156 53 160 54 164 55 168 57 172 60 176 62 180 65 184 69 188 72 import matplotlib.pyplot as plt import numpy as np data = np.array([ [152, 51], [156, 53], [160, 54], [164, 55], [168, 57], [172, 60], [176, 62], [180, 65], [184, 69], [188, 72] ]) print(data.shape) x, y = data[:, 0], data[:, 1] plt.scatter(x, y) plt.xlabel('height(cm)') plt.ylabel('weight(kg)') plt.show() plt.figure() (10, 2) 练习10 这部分代码是从网站拷贝下来的 给iris数据集使用KNN分类 from sklearn import datasets from collections import Counter # 为了做投票 from sklearn.model_selection import train_test_split import numpy as

认识和了解python

≯℡__Kan透↙ 提交于 2019-12-01 16:21:22
python的创始⼈为吉多·范罗苏姆(Guido van Rossum)。 python是一门解释型语言 弱类型语言   优点:      1.Python的定位是“优雅”、“明确”、“简单”      2.开发效率⾮常⾼      3. ⾼级语⾔----当你⽤Python语⾔编写程序的时候,你⽆需考虑诸如如何管理你的程序使⽤的内存⼀类的底层细节      4. 可移植性----由于它的开源本质,Python已经被移植在许多平台上(经过改动      使它能够⼯ 作在不同平台上)。如果你⼩⼼地避免使⽤依赖于系统的特性,那么你      的所有Python程序⽆需修改就⼏乎可以在市场上所有的系统平台上运⾏      5. 可扩展性----如果你需要你的⼀段关键代码运⾏得更快或者希望某些算法不公      开,你可以把你的部分程序⽤C或C++编写,然后在你的Python程序中使⽤它们。      6. 可嵌⼊性----你可以把Python嵌⼊你的C/C++程序,从⽽向你的程序⽤户提供      脚本功能。   缺点:     1.运行速度慢,⽐如你⽤C运⼀个程序花了0.01s,⽤Python是0.1s,这样C语⾔直接⽐Python快了10倍,     2.代码不能加密     3.线程不能利⽤多CPU问题 2,python发展史   Python 2.系列与Python 3

关于人工智能和python

别说谁变了你拦得住时间么 提交于 2019-12-01 13:48:40
人工智能的话题在近几年可谓是相当火热,前几天看快本时其中有一个环节就是关于人工智能的,智能家电、智能机器人、智能工具等等,在我的印象里,提到人工智能就会出现 Python,然后我便在网上查找了相关信息,并整合了一下。 人工智能 人工智能,英文缩写为AI,是研究、开发用于模拟、延伸和扩展人的智能的理论、方法、技术及应用系统的一门新的技术科学;是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器,该领域的研究包括机器人、语言识别、图像识别、自然语言处理和专家系统等。 Python Python 是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的、大型项目的开发。 之间的关系 而一般说起人工智能都认为是用 Python 语言实现的,就如我之前说的,但查完资料发现,的确大部分的人工智能的代码都是使用 Python 来编写,写人工智能代码时需要用到许多框架工具和库,这些大部分都是 Python 提供的,Python是这些库的API binding,但并不能因为这样就认为人工智能就是靠 Python 写的,Python 是解释语言,速度比较慢,它只是调用 AI接口,而人工智能核心算法是完全依赖于 C/C++ 这类编译语言

python3简介

蹲街弑〆低调 提交于 2019-12-01 13:06:55
Python3简介 Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。 Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。 Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。 Python 是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。 Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。 Python 是初学者的语言: Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。 Python 发展历史 Python 是由 吉多·范罗苏姆(Guido van Rossum) 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。 Python 本身也是由诸多其他语言发展而来的,这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。 像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。 现在 Python

手把手教你把Python应用到实际开发 不再空谈语学习 教程

强颜欢笑 提交于 2019-12-01 11:47:39
手把手教你把 Python应用到实际开发 不再空谈语法学习 教程 想用python做机器学习吗,是不是在为从哪开始挠头? 这里我假定你是新手,这篇文章里咱们一起用Python完成第一个机器学习项目。 我会手把手教你以下内容: 下载python,numpy,SciPy之类软件并安装,这些是python里机器学习方面最有用的软件包。 加载一个数据集,通过统计摘要(statistical summaries)和数据可视化来了解数据集的结构。 创建6个机器学习模型,选择这里边最好的,然后介绍通过何种方法来确定选出来的模型预测时有稳定的准确率。 如果你是机器学习的初学者,并且你下定决心用python作为开始机器学习的语言的话,这篇文章应该会比较适合你。 刚开始的时候,Python看起来有点吓人 Python是一种很流行,很强大的解释型语言。跟R不一样,对于研究,开发以及完成生产系统来说,python是一个完整的开发语言,一个完整的平台。 Python中也有许多可供选择的模块和库,对于上面说的研究,开发和完成生产系统提供了多种实现的路径。给人的感觉是python的前景势不可挡。 再次重申,用Python学习机器学习的最好方法是完成一个完整的项目。 这样做强制你安装Python,并且启动python的解释器(最少会这样)。 这样做能给你一个整体审视的机会,体验如何一步步完成一个小项目。

python函数式编程

人走茶凉 提交于 2019-12-01 11:43:39
一、高阶函数 1、变量可以指向函数 >>> f = abs >>> f(-10) 10 2、函数名也是变量,可以被赋值,但一般别这么干  3、传入函数 参数是一个函数---高阶函数 def add(x, y, f): return f(x) + f(y) >>>add(-5, 6, abs) 11    4、map / reduce ①map(函数名,Iterable) 函数作用到Iterable的每一个元素上,返回一个Iterator >>> def f(x): ... return x * x ... >>> r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> list(r) [1, 4, 9, 16, 25, 36, 49, 64, 81] >>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9])) ['1', '2', '3', '4', '5', '6', '7', '8', '9'] ②reduce(函数,序列) reduce 把结果继续和序列的下一个元素做累积计算   reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)  >>> from functools import reduce>>> def fn(x, y):... return x

结对编程-python实现

好久不见. 提交于 2019-12-01 10:38:49
目录 软件工程结对项目:Python实现wc程序 结对项目Github地址 项目成员 项目要求 说明 需求 PSP表格 解题思路描述 设计实现 代码组织图 代码分析 代码覆盖率 测试 单元测试 回归测试 效能分析 项目总结与收获 软件工程结对项目:Python实现wc程序 结对项目Github地址 https://github.com/Fyzy/Exercises__pwd 项目成员 刘志豪 3117008744 谭万钏 3117008747 项目要求 说明 实现一个自动生成小学四则运算题目的命令行程序(也可以用图像界面,具有相似功能)。 自然数:0, 1, 2, … 真分数:1/2, 1/3, 2/3, 1/4, 1’1/2, … 运算符:+, −, ×, ÷ 括号:(, ) 等号:= 分隔符:空格(用于四则运算符和等号前后) 算术表达式: e = n | e1 + e2 | e1 − e2 | e1 × e2 | e1 ÷ e2 | (e), 其中e, e1和e2为表达式,n为自然数或真分数。 四则运算题目:e = ,其中e为算术表达式。 需求 使用 -n 参数控制生成题目的个数,例如 Myapp.exe -n 10 将生成10个题目。 使用 -r 参数控制题目中数值(自然数、真分数和真分数分母)的范围,例如 Myapp.exe -r 10 将生成10以内(不包括10

第七章 面向对象

六眼飞鱼酱① 提交于 2019-12-01 10:23:11
7.1 面向对象基础 面向对象编程 (Object Oriented Programming, OOP ,面向对象程序设计) 优点和应用场景 : 业务功能较多时,通过面向对象归类 数据封装(创建字典存储数据) 游戏示例:创建一些角色,并根据角色需要再创建任务 封装思想 :将同一类的函数封装到同一个py文件中,以后方便使用 面向对象 :将同一类的函数封装到同一个class中,以后方便使用 对象名 :命名首字母大写 Note1(1) 函数式的应用场景 --> 各个函数之间是独立且无共用的数据 1. 基础概念 类 :具有相同方法和属性的一类事物 对象 、 实例 :一个拥有具体属性值和动作的具体个体 实例化 :从一个类得到一个具体对象的过程 # 定义一个类,Account class Account: # 方法, 哪个对象调用方法,其就是self def login(self,name): print(123) return 666 def logout(self): pass # 调用类中的方法 x = Account() # 实例化(创建)Account类的对象,开辟一块内存 val = x.login('henry') # 使用对象调用class中的方法 print(val) Note2(2) 应用场景 :用于很多函数,需要对函数进行归类和划分(封装) self :哪个对象操作