迭代计算

机器学习:感知机算法(不调库,纯Python代码)

跟風遠走 提交于 2020-01-28 01:43:12
什么是感知机 公式文字我也就不复现了,网上简直多如牛毛 (1)推荐看李航博士的《统计学习方法》 (2)或: https://www.jianshu.com/p/c91087e6e1ea(篇幅略小,简单了解) 第二篇文章篇幅较小,但基本介绍清楚了感知机的 原始形式 ,想要进一步了解感知机的 对偶形式 ,可自行搜索资料 以上两个推荐中,都是以两特征数据来分类的,也就是 数据点 和 超平面 可以在二维坐标系中呈现 于是我的代码也是如此,代码的可扩展性还是很大的,想要更高维度的数据可以自行修改 但是超过三维特征,将无法结合所有维度同时可视化 —————————————————————————————————————————————————— 强烈建议仔细看书学懂了再来看代码!!!不要囫囵吞枣,之前我也是觉得自己看懂了,实际写代码就傻眼 好好想想参数怎么更新,怎么储存数据,怎么利用numpy矩阵… 全程都采用矩阵来计算,初始化函数中,参数矩阵是一个三维矩阵,其中最后一个是偏置b 创建numpy数组必须声明浮点数类型,否则当学习率不为1时,会导致参数更新自动取整,进而会出现迭代无法完成的情况。 包括收录数据时,也要声明为浮点类型,否则就导致数据自动变为取整型int32 def __init__ ( self ) : self . learn_rate = 0.5 # 随意设置 self . w

SICP学习笔记(1.2.1 ~ 1.2.2)

 ̄綄美尐妖づ 提交于 2020-01-27 20:12:42
SICP学习笔记(1.2.1 ~ 1.2.2) 周银辉 1, 递归过程 和 递归计算过程 在学习SICP前我还没注意过有这样的一个区分,因为我们始终停留在语法表面上的“递归过程(recursive procedure)”,而没有去理解其实质是否是“递归计算过程(recursive process)”。 递归过程:从语法书写层面上而言的,在过程的定义中,其直接或间接地引用该过程本身。 比如 F{F}或者 F{G{F}} 递归计算过程:从实际运算层面上而言的,一个在语法上按照递归过程书写的函数其在运算时可能是按照递归的方式也可能是按照迭代的方式进行的。这取决于解释器或编译器本身是否有对“递归”进行优化,比如Scheme解释器是“严格尾递归”的, 而C#之类的,即便在语法形式上是"尾递归"的,但其仍然不能被编译成迭代计算过程,当然,你可以使用for,while等. 要检测出一个递归过程在计算时到底是按照递归方式还是按照迭代方式进行的,非常容易,只要将其进行深度递归或无限次递归,如果Stack Overflow了,那么是按照递归方式计算的,仅仅是一个死循环似的不停计算但没有栈溢出,那么是按照迭代方式计算的。一般而言函数式编程语言(Scheme,Haskell等), 会按照迭代方式进行计算;命令式编程语言(C++,C#,Java等)会按照递归方式进行计算。 2,迭代计算过程 和 递归计算过程

173. 二叉搜索树迭代器

人盡茶涼 提交于 2020-01-27 06:53:22
实现一个二叉搜索树迭代器。你将使用二叉搜索树的根节点初始化迭代器。 调用 next() 将返回二叉搜索树中的下一个最小的数。 示例: BSTIterator iterator = new BSTIterator(root); iterator.next(); // 返回 3 iterator.next(); // 返回 7 iterator.hasNext(); // 返回 true iterator.next(); // 返回 9 iterator.hasNext(); // 返回 true iterator.next(); // 返回 15 iterator.hasNext(); // 返回 true iterator.next(); // 返回 20 iterator.hasNext(); // 返回 false 可以看出本题是中序遍历二叉树的应用。 注意点:正常二叉树结构 、单叉树结构都需要考虑。 考虑实时计算,而不是直接计算出结果然后存储。 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ class BSTIterator

测试

让人想犯罪 __ 提交于 2020-01-27 02:39:19
for循环 目录: for简介 代码格式 语法格式 可被迭代的数据类型 列表 字典 字符串 不可被迭代的数据类型 整数 浮点值 布尔值 空值 整数转化为范围后可被迭代 range(y) range(x, y) range(x, y, i) Peace && Love 迭代列表时获取索引 continue 跳过本次循环 break 跳出循环 思考题 创建一个从1到100的整数列表 九九乘法表 for简介 【循环】:就是依照某些我们编写的特定规则,重复的做一件事。 当你需要重复的“搬砖”的时候,可以用for循环进行遍历,让机器循环的帮你去“搬砖”,彻底解放我们的双手。 【遍历】:所谓遍历,就是一遍一遍的经历。放到程序中,就是让程序一遍又一遍的经历重跑同一段代码程序的场景。和循环一个意思。 代码格式 nameList = ['小石头', 'xing.org1^', '郭菊锋']for name in nameList: print(name) # 3次循环依次打印出'小石头', 'xing.org1^', '郭菊锋'else: print('else情况') # else每次都会经过,当for循环执行完毕后执行else的代码块print('===for循环完毕===')print(name) # 郭菊锋 以上代码中,我们定义了一个列表数据nameList,并且使用for循环

【SPL标准库专题(1)】 SPL简介

空扰寡人 提交于 2020-01-26 11:58:28
什么是SPL SPL是Standard PHP Library(PHP标准库)的缩写。 根据官方定义,它是"a collection of interfaces and classes that are meant to solve standard problems" SPL是用于解决典型问题(standard problems)的一组接口与类的集合。 但是,目前在使用中,SPL更多地被看作是一种使object(物体)模仿array(数组)行为的interfaces和classes。SPL的核心概念就是Iterator。 在我的理解中,SPL以及后面要说的设计模式专题都是用于同一个目的: 构建优雅简洁易于扩展和维护的代码 ,有时候我们看上去写了更多的代码,但事实上却让代码的扩展性和维护性变得更强。 另外本专题属于PHP进阶课程。在本专题中给出的一些Example,看上去是有更简单的替代方案,但在实际上在更复杂的开发中,看似更多的代码却使得程序的可插拔性,可维护性变得更强,SPL以及设计模式都算是面向对象中的精髓了,所以面向对象的基础一定要掌握得非常牢才更能理解; Iterator 迭代器有时又称光标(cursor)是程式设计的软件设计模式,可在容器物件(container,例如list或vector)上遍访的接口,设计人员无需关心容器物件的内容。 PHP5开始支持了接口,

Python核心编程学习日记之条件和循环

丶灬走出姿态 提交于 2020-01-24 19:52:20
第8章: 条件和循环 if语句 格式:if expression: expr_true_suite else语句 格式:if expression: expr_true_suite else: expr_false_suite Python的缩进使用强制使代码正确对齐,避免出现“悬挂else”的问题 elif语句 可以使用序列和成员关系操作符,或者Python字典来替换大段的if_elif_else语句 条件表达式(三元操作符) 模拟三元表达式的一种方法:(C and [X] or [Y])[0]. 具体实现原理参照该篇博客。and和or的返回值是决定其值的操作数 Python2.5将语法确定为:X if C else Y while语句,for语句 for循环会访问一个可迭代对象(例如序列或是迭代器)中的所有元素,在所有条目都处理过后结束循环 迭代序列基本方法:通过序列项迭代;通过序列索引迭代;使用项和索引迭代,调用enumerate()函数 for循环访问迭代器:迭代器对象有一个next()方法,所有条目迭代完成后,迭代器引发一个StopIteration异常,for语句在内部调用next()捕获异常 range()完整语法:range(start, end, step = 1),不包括end range()简略语法:range(end)或者range(start,end)

Python基础知识点总结【面试必学】

蓝咒 提交于 2020-01-22 08:18:29
手写一个完整的装饰器模版: ps:另外很多人在学习Python的过程中,往往因为没有好的教程或者没人指导从而导致自己容易放弃,为此我建了个Python交流.裙 :一久武其而而流一思(数字的谐音)转换下可以找到了,里面有最新Python教程项目可拿,不懂的问题多跟里面的人交流,都会解决哦! 接下来继续: # 用于修复被装饰对象的名称空间 from functools import wrape def wrapper(func): @wraps(func) def inner(*args, **kwargs): # func执行之前的操作 res = func(*args, **kwargs) # func执行之后的操作 return res return inner 简述面向对象三大特性及各自特点 ''' 封装:将属性和方法放在类的内部,通过类的实例化出对象,用对象访问属性或方法,隐藏功能的实现细节,可设置访问权限 好处:提高了代码的复用性,安全性,降低代码的冗余度 继承:实现代码的重用,也可以理解为让类与类之间建立父子关系,使子类拥有父类的属性和方法,并可衍生出自己独有的属性和方法。需要注意的是,在python中存在多继承,这是其他编程语言没有的一个特性 好处:减少代码的重用,提高代码的可读性,规范编程模式 多态:同一个方法,不同对象调用,实现的功能不一样

python语法拾遗-高阶函数

允我心安 提交于 2020-01-22 07:36:01
title: python语法拾遗 date: 2019-11-12 12:23:49 categories: Python Python语法相关 tags: python 语法使用 description: python高阶函数(迭代器,装饰器,map-reduce等) python高阶函数(迭代器,装饰器,map-reduce等) 高级特征 迭代 迭代通过 for...in 来完成,作用对象可以是list,tuple,dict,str之类的可迭代对象。如下迭代dict类型: d = { 'a' : 1 , 'b' : 2 , 'c' : 3 } for key in d : print ( key ) #a,b,c 注:dict字典数据类型,内部原始没有顺序,故输出顺序可能不同。dict默认迭代key值,如要迭代value值,需要使用 for value in d.values() ;如要迭代键值对,要使用 for k,v in d.items() 。 可迭代对象的判断方法,使用collections模块的Iterable类型判断: from collections import Iterable isinstance ( 'abc' , Iterable ) # 返回True,即str为可迭代对象 enumerate 函数,可以将list变成索引-元素对: for i , v

序列!序列!+习题复习

久未见 提交于 2020-01-22 02:36:52
##序列!序列! ※列表、元组和字符串的共同点 —都可以通过索引得到每一个元素 —默认索引值总是从0开始 —可以通过分片的方法得到一个范围内的元素的集合 —有很多共同的操作符(重复操作符、拼接操作符、成员关系操作符) (所以把列表、元组、和字符串统称为序列) ##序列中常见的BIF ※list():作用是把一个可迭代对象转化为列表 ※迭代:所谓迭代,就是重复反馈过程的活动,其目的通常是为了接近并达到所需的目标或这个结果,每一次对过程重复我们称为一次迭代,而每一次迭代得到的结果都会被用来作为下一次迭代的初始值,所以,目前来说,迭代就是一个for循环, (list()本身作为方法它有两个形态,一个形态是有参数,一个是没有参数的,没有参数他默认是生成一个empty空的列表,另一个是有一个iterable参数,这是一个迭代器) (把一个元组变成了一个列表) ※tuple([iterable]):作用是把一个可迭代对象转化为元组,实现和list()大部分是一样 ※str(obj):把obj对象转化为字符串 ※len(sub):返回参数sub的长度 ※max():返回序列或者参数集合中的最大值 (可以直接给值) (也可以传一个序列,因为b是字符列表,返回的最大值是根据ASCII码比较大) ※min():返回序列或者参数集合中的最小值 (传一个字符串也可以比较,比较ASCII码)

每周一个 Python 标准库 | itertools

此生再无相见时 提交于 2020-01-22 00:19:19
技术博客:https://github.com/yongxinz/tech-blog 同时,也欢迎关注我的微信公众号 AlwaysBeta ,更多精彩内容等你来。 Python 标准库模块 itertools 提供了很多方便灵活的迭代器工具,熟练的运用可以极大的提高工作效率。 无限迭代器 itertools.count count ( start = 0 , step = 1 ) 创建一个迭代器,生成从 n 开始的连续整数,如果忽略 n,则从 0 开始计算。示例: In [ 2 ] : for n in itertools . count ( ) : . . . : if 100000 < n < 100010 : . . . : print n . . . : if n > 1000000 : . . . : break . . . : 100001 100002 100003 100004 100005 100006 100007 100008 100009 itertools.cycle cycle ( iterable ) 把传入的一个序列无限重复下去。示例: In [ 6 ] : count = 0 In [ 7 ] : for c in itertools . cycle ( "AB" ) : . . . : if count > 4 : . . . : break .