迭代计算

如何从 0 到 1 构建个性化推荐?

痴心易碎 提交于 2019-12-04 14:34:51
文章作者:曾钦榜 58同城 高级技术经理 编辑整理:周晓侠 内容来源:58技术沙龙 出品社区:DataFun 注:欢迎转载,转载请在留言区内留言。 导读:随着科学技术的飞速发展,互联网被广泛应用于各个领域,而以互联网为基础的招聘模式也越来越受到企业的青睐。互联网招聘具有不受地域限制、覆盖面广、招聘成本低、针对性强、方便快捷、时效性强等优点,现已得到广泛应用,其中,58招聘是互联网招聘行业中规模最大的平台。今天主要跟大家分享下58招聘如何通过个性化推荐技术服务大规模求职者和招聘企业。分享题目是从零到一构建58招聘个性化推荐,主要通过以下三方面进行介绍: 招聘业务介绍 个性化推荐实践 心得分享与规划 ——招聘业务介绍—— 58招聘业务简介 2018年我国全国总人口13.9亿多,其中就业人口7.7亿,招聘基数庞大。三大产业就业人口占比分别26.11%,27.57%,46.32%,其中第三大产业占比最大,部分发达国家第三大产业占比已达到70%~80%,随着经济的发展,我国未来就业市场和就业分布将发生大的变化。2019年8月城镇调查显示我国失业率为5.2%,其中25~59岁失业率4.5%,同时每年有800多万的应届生加入就职市场。58招聘作为我国互联网招聘行业之首,每天服务于千万级求职者和大中小企业,平台每天生成千万级连接,促成大量求职者求职成功。 58招聘平台主要服务于求职者和招聘方

叠加装饰器 迭代器

喜你入骨 提交于 2019-12-04 13:33:04
叠加装饰器: ​ 在同一个被装饰对象中,添加多个装饰器,并执行 @装饰1 @装饰2 @装饰3 def 被装饰对象(): ​ pass 注意:装饰器在调用被装饰对象是才会添加的功能 叠加装饰器: ​ -- 装饰器的顺序:由下到上 ​ --执行的顺序:由下到上 注意:无论inner中出现任何判断,最后都要返回“调用后的被装饰对象” func(*args, **kwargs) 有参装饰器: ​ 本质上是在无参装饰器上套了一个外层函数 ​ 无参装饰器可以引用外层函数的名字 应用: 用户权限的认证 迭代器 迭代器: ​ 迭代取值的工具 迭代: ​ 迭代指的是重复迭代,每一次迭代都是基于上一次的结果而产生 迭代器: ​ 迭代器指的是迭代取值的工具,它可以迭代取值 如果想要知道python中迭代器是什么,首先需要先知道什么是可迭代对象? 可迭代对象: ​ 所有的序列类型:str(字符串)、list(列表)、tuple(元祖)、dict(字典)、set(集合)、f(文件) ​ 凡是内部有 __ iter__ () 方法的都是可迭代对象 可迭代对象: 通过可迭代对象 __ iter __ (),得到的返回值就是“迭代器对象” 迭代器是迭代取值的工具,作用是迭代取值 获取迭代器: list1 = [1,2,3] #调用__iter _ ()会得到一个返回值,该返回值就是一个迭代器对象 ​ iter

python高级

荒凉一梦 提交于 2019-12-04 11:55:30
python高级 和is的使用 is 判断地址 比较两个引用是否指向了同一个对象(引用比较) 判断值 比较两个对象是否相等 深拷贝和浅拷贝 深拷贝 返回拷贝过的新对象 是对于一个对象所有层次的拷贝(递归) 浅拷贝 两个变量指向同一地址 是对于一个对象的顶层拷贝 拷贝的是引用 动态语言 运行时可以修改类和对象的内容,有__slots__约束属性值 生成器 generator 定义 在Python中,这种一边循环一边计算的机制,称为生成器 生成式 可对返回的值进行加工 yield 返回当前值,暂停 send 发送一个值 协程 两个方法交替执行,模拟多任务实现方式之一 迭代器 iterator 定义 迭代是访问集合元素的一种方式。 迭代器是一个可以记住遍历的位置的对象。 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。 可以使用for循环和next() 生成器是迭代器,迭代器不一定是生成器 判断是否可以迭代 引用一个集合的模块 from collections.abc import Iterable,Iterator isinstance(listA, Iterator) iter函数 可迭代对象转换为迭代器 装饰器 decorator 闭包 方法内部声明方法,内部方法引用外部方法的变量,外部方法返回内部的引用 定义 拓展函数功能的一种函数,

python中的函数递归和迭代问题

倖福魔咒の 提交于 2019-12-04 09:26:54
一、递归 1、递归的介绍 什么是递归?    程序调用自身的编程技巧称为递归( recursion)。递归做为一种算法在程序设计语言中广泛应用。 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法, 它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量 。递归的能力在于用有限的语句来定义对象的无限集合。一般来说,递归需要有边界条件、递归前进段和递归返回段。当边界条件不满足时,递归前进;当边界条件满足时,递归返回。   递归要注意的是,它是直接或间接调用自身,所以在使用递归时,必须有一个明确的递归结束条件,称为递归出口,否则,他就会陷入死循环。 尾递归   具体可以看一下博客 https://blog.csdn.net/ialexanderi/article/details/81482878   如果一个函数中所有递归形式的调用都出现在函数的末尾,我们称这个递归函数是尾递归的。当递归调用是整个函数体中最后执行的语句且它的返回值不属于表达式的一部分时,这个递归调用就是尾递归。尾递归函数的特点是在回归过程中不用做任何操作,这个特性很重要,因为大多数现代的编译器会利用这种特点自动生成优化的代码。 python不是一门函数式编程语言,本身不支持尾递归(没有对尾递归做优化)

JDK1.7中HashMap底层实现原理

核能气质少年 提交于 2019-12-04 08:11:51
原文链接: https://www.cnblogs.com/dijia478/p/8006713.html 一、数据结构 HashMap中的数据结构是数组+单链表的组合,以键值对(key-value)的形式存储元素的,通过put()和get()方法储存和获取对象。 (方块表示Entry对象,横排表示数组table[],纵排表示哈希桶bucket【实际上是一个由Entry组成的链表,新加入的Entry放在链头,最先加入的放在链尾】,) 二、实现原理 成员变量 源码分析: /** 初始容量,默认16 */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 /** 最大初始容量,2^30 */ static final int MAXIMUM_CAPACITY = 1 << 30; /** 负载因子,默认0.75,负载因子越小,hash冲突机率越低 */ static final float DEFAULT_LOAD_FACTOR = 0.75f; /** 初始化一个Entry的空数组 */ static final Entry<?,?>[] EMPTY_TABLE = {}; /** 将初始化好的空数组赋值给table,table数组是HashMap实际存储数据的地方,并不在EMPTY_TABLE数组中 */

迭代器与生成器

隐身守侯 提交于 2019-12-03 20:36:08
一、迭代器 迭代器可以理解为一种特殊的游标,是对循环遍历等一系列操作组成的一种抽象描述。而迭代器协议是程序的一种绑定关系,实现了该协议的对象称为可迭代对象。迭代器协议强调对象必须提供一个next或__next__()方法,并且执行该方法只有两种决策,要么返回迭代中的下一项,要么者引起一个StopIteration异常,以终止迭代。for循环的本质是循环所有对象,使用的一定是迭代器协议生成对象。因此for循环可以遍历所有的可迭代对象(字符串、列表、元组、字典、文件对象等)。既然如此,为什么我们定义一个序列的时候没有使用next方法呢?这是为什么呢?从理论上来讲,只有实现迭代器的对象才可称为可迭代对象。而我们在定义字符串、列表、元组、字典、文件对象的时候,本身没有给出next方法。从这种角度上来看,他们并没有遵循迭代器协议。但是平时我们为什么还是认为他们是可迭代对象呢? Python提供了一个可以让某种数据类型变为可迭代数据类型的方法,即让某种数据类型的对象直接调用__iter__()或iter()方法,此时我们再查看该数据类型的对象时就多出了next方法。下面如我们通过一个简单的实例来分析,我们使用字符窜调用__iter__()方法,然后使用可迭代对象调用next方法。 string = "hello world" myiter = string.__iter__() print

1.深度学习与神经网络基础

99封情书 提交于 2019-12-03 18:51:41
*总结涵盖吴恩达老师神经网络和深度学习课程第一周和第二周的内容 提纲 1、深度学习概要 2、神经网络基础 3、课程中编程技巧总结 1、深度学习概要 在这一部分,我希望结合视频内容对“深度学习”和“神经网络”两个词形成自己的表述。视频课程里的说法是“深度学习”是用来训练“神经网络”的一种算法,首先,什么是“神经网络”,其次,“训练”是个很抽象的词,我们会说训练人或训练动物,但对于一个非生物的“神经网络”,什么叫“训练”,怎么“训练”? 1.1 神经网络 为说明这个概念,给出两个预测房价的例子。 (1)例1 : 假设有现成的6组数据,每组数据对应一个待售的房屋,含面积(size)和售价(price)两个量,现在希望利用这现成的6组数据,给出现有数据外的一个房屋,仅根据房屋的面积预测房屋的售价。 思路: 建立一个二维坐标轴,横轴代表房屋面积,纵轴代表房屋售价,根据线性回归的知识,我们可以拟合出一条直线 ,其中 k和 b的值可以根据现成的6组数据求出,同时考虑到实际房屋售价不可能为负,将负值部分用一条与横轴重合的水平直线代替,示意图如下。 这样,我们在房屋面积和售价之间建立了一对一的映射,或者说我们得到了一个以面积为自变量,售价为因变量的函数,给出面积,就能映射出售价。如果我们仅仅关心输入与输出,相当于存在一个黑箱,能将输入的房屋面积转化为输出的房屋售价,这一充当转换器功能的黑箱就是一个

机器学习 --超参数调优

五迷三道 提交于 2019-12-03 17:17:56
 机器学习中,绝大部分模型没有解析解,需要采用梯度下降法求解最有参数,各种各样的梯度下降法都会遇到一个问题,就是如何设置学习率,是一个技术活,更是一个运气活。 一 学习率参数调优的原理 超参数调优,经常会遇到两个问题: 1、 模型发散,参数随着迭代数值绝对值越来越大,甚至发散到无穷,从损失函数来看,误差也会越来越大。 2、 震荡,从损失函数来看,误差出现震荡,模型在局部最优解附近徘徊。 1.1 模型参数发散的原因 假定损失函数为 Q ( β ) > 0 Q ( β ) > 0 //--> ,通常梯度下降法可表示为 β n e w = β o l d − λ ∇ Q ( β ) | β = β o l d β n e w = β o l d − λ ∇ Q ( β ) | β = β o l d //--> 当 Q ( β ) Q ( β ) //--> 满足条件: ∥ ∇ Q ( β ) ∥ ≥ s ∥ β ∥ ; ∀ ∥ β ∥ > M > 0 a n d s > 0 ‖ ∇ Q ( β ) ‖ ≥ s ‖ β ‖ ; ∀ ‖ β ‖ > M > 0 a n d s > 0 //--> 几乎所有损失函数都满足这一条件,比如最简单的 Q ( θ ) = a θ 2 , a > 0 , ∀ θ ≠ 0 Q ( θ ) = a θ 2 , a > 0 , ∀ θ ≠ 0 //-->

六、迭代器、生成器和装饰器

随声附和 提交于 2019-12-03 15:36:33
1.迭代器 定义 能被next()函数进行调用且不断返回下一个值的对象。其内置方法中包含 __iter__ (返回迭代器本身)和 __next__ (返回容器的下一个元素)。 特征 迭代器会生成惰性序列,它通过计算把值依次的返回,一边循环一边计算,而不是一次性得到所有的数据。 优点 需要数据的时候,一次取一个,可以在很大程度上节省内容空间,而不是一次性把所有的数据存入内存中;此外,可以遍历无限量的数据。 创建 使用 iter() 函数来创建。 string = iter('abcd') print(next(string)) print(next(string)) print(next(string)) print(next(string)) # 遍历完成之后继调用 print(next(string)) # 输出结果 StopIteration a b c d # 注意:当遍历完序列时,会引发一个StopIteration异常。使用for循环可以规避整个问题(for循环的底层使用了next方法)。 string = iter('abcd') for item in string: print(item) # 输出结果 a b c d 2. 生成器 定义 包含了yield语句的函数。 特征 执行生成器函数时,其内部代码不执行,而是返回一个生成器对象( 特殊的迭代器 )

蚁群算法

假装没事ソ 提交于 2019-12-03 14:52:26
一、蚁群算法简介   蚁群算法(AG)是一种模拟蚂蚁觅食行为的模拟优化算法,它是由意大利学者Dorigo M等人于1991年首先提出,并首先使用在解决TSP(旅行商问题)上。 之后,又系统研究了蚁群算法的基本原理和数学模型. 二、蚁群算法原理 1、蚂蚁在路径上释放信息素。 2、碰到还没走过的路口,就随机挑选一条路走。同时,释放与路径长度有关的信息素。 3、信息素浓度与路径长度成反比。后来的蚂蚁再次碰到该路口时,就选择信息素浓度较高路径。 4、最优路径上的信息素浓度越来越大。 5、最终蚁群找到最优寻食路径。 三、蚁群算法流程图 四、实例应用 基于TSP问题的基本蚁群算法 原理讲解参考老师上课讲解的PPT不做过多粘贴 1.源代码: %% 旅行商问题(TSP)优化 %% 清空环境变量 clear all clc %% 导入数据 citys = ceil(rand(50,2)*50000) %load newcitys.mat %% 计算城市间相互距离 fprintf('Computing Distance Matrix... \n'); n = size(citys,1); D = zeros(n,n); for i = 1:n for j = 1:n if i ~= j D(i,j) = sqrt(sum((citys(i,:) - citys(j,:)).^2)); else D(i