python算法核心算法有哪些

这是一个创建于 186 天前的主题,其中的信息可能已经有所发展或是发生改变。

名校毕业,精通各类算法,tensorflow, pytorch 如数家珍,面试不会写排序

实战经验丰富的 CRUD 工程师,连个 Group By 都不会,来应聘机器学习工程师

想要一个基础扎实的,认真刷刷 LeetCode 和 Kaggle 题的面试者,好难啊

大家跳槽或者找工作的的时候都在哪里玩儿,拉钩,boss 直聘,v2ex ?

大家觉的 Python 算法工程师 这个 Title 会有吸引力吗?

感觉大家好像对这个topic感兴趣,,我顺便贴个招聘连接,

经过和同事们的交流,还是觉的这种二合一人才,其实是对应聘者有点误导

我们的部门的确可以让工程人员来进行模型方面的工作,但是绝对不是一上来就做模型,还是要从研发做起

所以先招工程师吧,谢谢大家给的建议和回复

脚本语言入门简单,很多人不讲究,基本数据结构 都搞不清,就更别说算法了

反正没有什么不是一个 import 解决不了的

我昨年一段时间负责爬虫工程师的招聘,一个月,面试几十个,没招到一个

如果要招算法工程师,语言不是很重要,python 和各种 package 以及机器学习框架,比算法优先级低很多

算法和工程差别会越来越大,就跟软硬件工程师一样

楼主可能对专家特征比较执着。观察过市场上的从业者,2000+年后的基本如此,怀疑和学术思潮有关。

在目前 DL 可以完胜人工专家特征的情况下。。。为什么还对专家特征如此执着?目前机器学习应该是联结主义的天下。

这不就是专业分化的趋势吗?搞理论的跟搞工程的逐渐分成两拨人。
Python 市面上的调包侠多得是,但是不一定能力就差,做工程一样是能手。主要还是取决于楼主的需求。

写业务代码的,和作算法研究应用的当然是不同的人呀

python 太网红了,直接导致不合格的 python 程序员太多,调过几个包看过几本算法理论书就自称 python+机器学习,然而最基础的数据结构关很多人都不重视

“帅的男人没有钱, 有钱的男人不帅, 又帅又有钱的男人却靠不住” 所以只能是: “虽然我没有车,虽然我没有房,但是我......”

没有问题是 import 不能解决的,如果有,就再 import 一次。 -- 调包侠

嗯嗯,遇不上啊,拉钩职位挂了半个月,,,我最后的面试方法是,我靠的是 leetcode 这道题,你查 10 分钟再写一下,,,

最适合的人选是本身是有经验的 Pyhon 开发,想往算法方面转,而且还自己向前走了一段,比如认真刷了几个月 Kaggle 题这种

现在别人学 python 也怕找不到工作的。别人都说拉勾一百年匹配不上。换个地方试试吧。

我在的公司 是 fintech 方面的,DL 在图像语音这些方面的确完胜人工,

但是在面临不同的场景的时候,其实人还是更有优势的,需要真对场景提出不同特征和模型

团队由 4 名经验丰富的 90 后工程师组成,各个都是独挡一面的大拿。

都是大拿了,相信对他们来说简单说下你要求的这些东西应该很快搞定的了。

你这个还是招 python 服务开发和机器学习开发,两个分开,就好搞了,你这招聘要求多了

我们公司研发部门也就三百来人

我这种 java 出生的爬虫工程师导师经常开发小型 python 服务,用来部署一些机器学习模型(如贷款评分卡)

如果用 Xception 的思路的话,把人的判断作为模型的特征量或许可行。但其实也是把人当成传感器使了。。。

这是用一个人的钱干两个人的活。 当然难招了。

专业分工这个是真的,但是其实程序员更熟悉业务,其实慢慢是可以朝着数据科学家发展的,现在只是太缺人了,所以硬生生改成两拨人了

,,,,工程能力好的调包侠,,,感觉就是大熊猫

看标题,感觉这估计是 py 在历史上被黑的最惨的一次

可惜我还没毕业…给我留下了市场很需要我的幻想

尝试过分开招,但是跟大厂一个招聘策略的话,那就注定我们这种中小场,开发和算法都 找不到比较好的人,很多时候就是人家过来拿个 offer 当个跳板。

最后留下混的好是那种有经验的开发,然后想转机器学习的开发,这样的人自驱能力比较强

,单做现在的业务,其实我们都能远程办公了,但是比如别人的团队都在成长,我们团队规模没上来,新机会抓不住

應該有不少研發工程師有憑自己興趣玩過一些機器學習,嘗試一下這部分人群吧。

看到这个标题,我就知道说的是我这种人,前两年做 java,python 高并发后台,最近两年转行做机器学习,哈哈,看到身边的纯算法同事各种代码看不懂我就表示很欣慰。

确实很多搞学术的代码写的太烂了

对他们来说,能用就行了,工程不是重点方向。

真的啊,做的好的研发,转算法成本很低,安心干两年业务,熟悉了流程其实发展很好

国内能顺溜的把冒泡写完整了的所谓"程序员"都少, 所以到处缺人呢, 人力紧缺啊, 这种档次的只能叫人肉

leetcode 刷过,python 搞过机器学习,但是没用 python 开发过项目,应该不满足楼主的要求了,1-3 年后不知道能不能达到,想请教下这个岗位的薪资 在多少范围(北京)?

如果是初级,其实比较合理的是 18k 左右,可以简历发来看看

认识的算法大牛都去玩 c++了,你让他们用 py 写业务?不可能的?

基本都是 py 原型验证 上线的时候再用 c++重写吧

会 C 之类的 py 就是一脚本语言 边看文档边写就够了

看了 JD,还是有需求混淆的问题...

作风控和数学模型,这本身已经是个单独的岗位了,数学统计专业最佳,有金融和风控行业更棒(这个薪资水准嘛,招不到的)。

还想同时满足一线去写业务系统代码,招人更难。

相关 python 代码实现,得另外找个 有风控系统相关经验(没有也问题不大)的 python 码工就行了

#53 补充,是看的 “闪银-数模组”

今天在 boss 上刚刚刷到这家公司。就来 v2 上看到了

这要求发散下去就差手写汇编了。。

我个人刷题都是用 Python 的...搞 CV 有时候也需要实现一些 tricky 的算法,而且很多人都是这样,所以我觉得不成立

看了此贴,坚定了继续一面开发一面搞一下算法的决心。。。但是真的很累啊。。。

这么说吧,去微博微信上面搜一下,xx 小时学会 py,xx 小时学会爬虫、xx 万数据爬虫、xx 分钟建立模型;无力吐槽;爬虫隔一天重发一次,n 年前的,除了给网站增加压力不知道还有什么效果。。。哦对刚想起来,培训机构出来的都很“屌”

再者 py,偏重工程实现效率,所以都是直接 import 大法了;数挖熟悉的不是经典算法;

如果 group by 都不会,那就。。。(想起前同事吐槽他现在的公司的港中高材生不会安装 py。。。)

现在的机器学习难道不是调参数工程师么?
只能说... 现在几乎没啥脑力劳动的编程了, 基本都是体力活儿.
熟练了的人根本不需要过脑子了, 不熟练的人可能对着文档搞搞也出来了, 也没有过多少脑子 - -!!
没有要 AOE 的意思啦, 大部分程序员工作其实都是这样啊...

算法一般会出到 LEETCODE 什么难度的。。如果是 HARD 的而且没做过的,估计没把握在半个小时的面试里面手写出来还能 debug 过··

我见过算法好的 任意图灵完备的语言都玩得转 说到底语言只是表达方式而已

确实如此 不过现在 mit 也有两本书是用 python 来讲 CS 和数据结构的 只是出得有点晚 可能过几年就不同了

我会写排序可是我找不到工作啊,hhh

这方面搞得好的都去大厂或者高知名度例如商汤之类的公司了,楼主组内没有知名大牛,职位描述吸引力也不是很大。
顺便问一句,面试的人里面,有在 CVPR/ICCV/ECCV/NIPS 等顶级会议里发过期刊的吗,如果这些人连简单的算法题都不会做,那楼上许多 AOE 才成立,毕竟这些人才是真正的机器学习实践者 :)

话说你们是只考虑一直写 Python 的吗?像有的工程师可能并不专注于某一种语言。

业务强 + Python 强,感觉已经筛掉了很多人。不妨直接招业务极强并且有往你们方向上靠的意愿的工程师,然后开始培养。

我倒是发了简历,完全没人鸟我 。。。。 可能我还是太 low 了吧

感觉搞算法的话,不懂 python 也可以理解,用 c 写个包给 py 调用就可以了吧。

你见过哪 AI 包是 python 写的?还不都是 C++,连 java 都少,因为性能。

算法确实用任何一门通用编程语言都可以描述。

问题是 py 是个以包多省事儿慢得出翔的胶水脚本语言。

python 算法工程师听起来简直就跟清纯的岛国动作片女演员一样。

Python递归算法Vip干货!人工智能核心课程,算法入门就用它了!

用或其他应用扫描二维码

Python递归算法Vip干货!人工智能核心课程,算法入门就用它了!

若未安装客户端,可直接扫此码下载应用

本文来自于简书,本文主要介绍了数据结构中的八大排序算法,利用Python分别将他们进行实现。

八大排序,三大查找是《数据结构》当中非常基础的知识点,在这里为了复习顺带总结了一下常见的八种排序算法。

常见的八大排序算法,他们之间关系如下:

下面,利用Python分别将他们进行实现。

直接插入排序的核心思想就是:将数组中的所有元素依次跟前面已经排好的元素相比较,如果选择的元素比已排序的元素小,则交换,直到全部元素都比较过。

因此,从上面的描述中我们可以发现,直接插入排序可以用两个循环完成:

第一层循环:遍历待比较的所有数组元素

希尔排序的算法思想:将待排序数组按照步长gap进行分组,然后将每组的元素利用直接插入排序的方法进行排序;每次将gap折半减小,循环上述操作;当gap=1时,利用直接插入,完成排序。

同样的:从上面的描述中我们可以发现:希尔排序的总体实现应该由三个循环完成:

第一层循环:将gap依次折半,对序列进行分组,直到gap=1

第二、三层循环:也即直接插入排序所需要的两次循环。具体描述见上。

简单选择排序的基本思想:比较+交换。

从待排序序列中,找到关键字最小的元素;

如果最小元素不是待排序序列的第一个元素,将其和第一个元素互换;

从余下的 N - 1 个元素中,找出关键字最小的元素,重复(1)、(2)步,直到排序结束。

因此我们可以发现,简单选择排序也是通过两层循环实现。

第一层循环:依次遍历序列当中的每一个元素

第二层循环:将遍历得到的当前元素依次与余下的元素进行比较,符合最小元素的条件,则交换。

堆:本质是一种数组对象。特别重要的一点性质:任意的叶子节点小于(或大于)它所有的父节点。对此,又分为大顶堆和小顶堆,大顶堆要求节点的元素都要大于其孩子,小顶堆要求节点元素都小于其左右孩子,两者对左右孩子的大小关系不做任何要求。

利用堆排序,就是基于大顶堆或者小顶堆的一种排序方法。下面,我们通过大顶堆来实现。

堆排序可以按照以下步骤来完成:

首先将序列构建称为大顶堆(这样满足了大顶堆那条性质:位于根节点的元素一定是当前序列的最大值);

取出当前大顶堆的根节点,将其与序列末尾元素进行交换(此时:序列末尾的元素为已排序的最大值;由于交换了元素,当前位于根节点的堆并不一定满足大顶堆的性质);

对交换后的n-1个序列元素进行调整,使其满足大顶堆的性质;

重复2.3步骤,直至堆中只有1个元素为止。

冒泡排序思路比较简单:

将序列当中的左右元素,依次比较,保证右边的元素始终大于左边的元素( 第一轮结束后,序列最后一个元素一定是当前序列的最大值);

对序列当中剩下的n-1个元素再次执行步骤1。

对于长度为n的序列,一共需要执行n-1轮比较(利用while循环可以减少执行次数)。

快速排序的基本思想:挖坑填数+分治法

从序列当中选择一个基准数(pivot),在这里我们选择序列当中第一个数最为基准数;

将序列当中的所有数依次遍历,比基准数大的位于其右侧,比基准数小的位于其左侧;

重复步骤1.2,直到所有子集当中只有一个元素为止。用伪代码描述如下:

j--由后向前找比它小的数,找到后挖出此数填前一个坑a[i]中。

i++由前向后找比它大的数,找到后也挖出此数填到前一个坑a[j]中。

再重复执行2,3二步,直到i==j,将基准数填入a[i]中

归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个典型的应用。它的基本操作是:将已有的子序列合并,达到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。

归并排序其实要做两件事:

分解:将序列每次折半拆分

合并:将划分后的序列段两两排序合并

因此,归并排序实际上就是两个操作,拆分+合并

首先依次从第一段与第二段中取出元素比较,将较小的元素赋值给temp[]

重复执行上一步,当某一段赋值结束,则将另一段剩下的元素赋值给temp[]

在这里,我们采用递归的方法,首先将待排序列分成A,B两组;然后重复对A、B序列分组;直到分组后组内只有一个元素,此时我们认为组内所有元素有序,则分组结束。

基数排序:通过序列中各个元素的值,对排序的N个元素进行若干趟的“分配”与“收集”来实现排序。

分配:我们将L[i]中的元素取出,首先确定其个位上的数字,根据该数字分配到与之序号相同的桶中

收集:当序列中所有的元素都分配到对应的桶中,再按照顺序依次将桶中的元素收集形成新的一个待排序列L[ ]

对新形成的序列L[]重复执行分配和收集元素中的十位、百位...直到分配完该序列中的最高位,则排序结束。

根据上述“基数排序”的展示,我们可以清楚的看到整个实现的过程。

写完之后运行了一下时间比较:

从运行结果上来看,堆排序、归并排序、基数排序真的快。

对于快速排序迭代深度超过的问题,可以将考虑将快排通过非递归的方式进行实现。

我要回帖

更多关于 python算法 的文章

 

随机推荐