📣 4th of July限时特惠: VIP通行证立减$68
查看: 10891| 回复: 22
跳转到指定楼层
上一主题 下一主题
收起左侧

[其他] Machine Learning Engineer用Python刷题,该不该用builtin函数?

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
刚起步刷LeetCode,目标Machine Learning Engineer,用Python,该不该用builtin函数?
做DS Project时,常用Python的builtin函数,觉得很方便,但刷算法题的时候,似乎感觉应该多practice自己写实现过程的能力,而不是只用builtin函数?

举例说明:LeetCode 27,Remove Element
如果用builtin函数非常简单,39ms
  1. while val in nums:
  2.        nums.remove(val)
  3. return len(nums)
复制代码
然后看discussion,排名靠前的Python solution是这样的,也是39ms
  1.     start, end = 0, len(nums) - 1
  2.     while start <= end:
  3.            if nums[start] == val:
  4.                    nums[start], nums[end], end = nums[end], nums[start], end - 1
  5.            else:
  6.                    start +=1
  7.     return start
复制代码
在这里就很纠结:是否应该重点按照后者的思路呢?

欢迎讨论,非常感谢~



上一篇:刷题记录贴-做一个有志气的人
下一篇:复习手册-普林斯顿算法第四版
推荐
sdq1688 2017-9-13 02:25:23 | 只看该作者
全局:
本帖最后由 ianhezy 于 2017-9-13 02:26 编辑

/*用python刷题不就是为了用下他高超优雅的函数吗。。。*/

没听说过大部分ML Engineer要精通C++的。。。就算有新的model放出来要用底层的C++开始写package,这也不是你的活。。
就跟让一个Big Data engineer从底层开始搭建hadoop框架一样。。。。这种事情很少让你那么干的。。

/* 不信的话,打开linkedin,搜索machine learning engineer,看看jd里有没有写required cpp experience,总数超过一半我吃屎,谢谢*/
ML Engineer至少用java或者python刷到medium难度的题吧。。。。对于一个ML Engineer来说,刷题是中等意思。。。还有别的更主要的。。不要为了刷题和学个cpp把别的都扔了。 //更何况现在好多sde都不要cpp了,结果ML却要求大部分不是cs科班出身的ml engineer会cpp且精通到能开发,你们不觉得奇怪吗。
回复

使用道具 举报

推荐
sdq1688 2017-9-13 11:30:24 | 只看该作者
全局:
eve2ada 发表于 2017-9-13 09:50
非常感谢回复,信息量很大:)
前面有回复说需要C++的,应该是DL方面的,或者偏Research的。
我理解ML En ...

需要PHD背景的大部分都是Core Data Scientist例如FB或者Data Scientist例如GOOGLE...
ms背景的ds也很多,不过都偏analytics方向,不做research比如NLP,DL等等

ML Engineer也有很多stat, EE之类的,不是单单只有CS的学生

我同意如果想好好做ML和做前端的package开发,要在Python各大前沿package里列上自己是core-author,cpp必不可少
但是
你是
一个
new grad。
回复

使用道具 举报

推荐
fatfatjoey 2017-9-13 01:47:25 | 只看该作者
全局:
Mitochondria 发表于 2017-9-12 23:16
主要看贾扬清说他们招人必会C++和python
各种平台上关注的大佬提到python和C++这对组合的概率也明显比其 ...

贾扬清是搞DL的,C++肯定是必备。
回复

使用道具 举报

🔗
Mitochondria 2017-9-12 13:51:47 | 只看该作者
全局:
用python不就图第一种方法多吗?写python就要体现出python的特性
python本身的定位就是 写起来方便,快速开发,快速验证,快速迭代。
想写复杂的用C++写 你当ML engineer怎么能只会python,起码C++要精通吧

PS:start +=1 这里1前面少了一个空格
回复

使用道具 举报

🔗
 楼主| eve2ada 2017-9-12 13:57:06 | 只看该作者
全局:
Mitochondria 发表于 2017-9-12 00:51
用python不就图第一种方法多吗?写python就要体现出python的特性
python本身的定位就是 写起来方便,快速 ...

感谢回复
想问下Machine Learning Engineer是必须要精通C++么?实际工作中什么情况下一定要用C++呢?如果会一些Java是否可以?多谢:)

PS:非常感谢指出这里少个空格,我自己回去看了一下也怪难受。
回复

使用道具 举报

🔗
clfhaha1234 2017-9-12 14:13:51 | 只看该作者
全局:
eve2ada 发表于 2017-9-12 13:57
感谢回复
想问下Machine Learning Engineer是必须要精通C++么?实际工作中什么情况下一定要用C ...

过来凑个热闹

1、Python 底层也是用 C/C++实现的把,使用函数的时候最好知道底层实现方式,这样被问时间复杂度也有底
2、工作中什么语言都有可能用到,纯python也不过是别人用其他语言把框架搭好了让你轻松一点。语言都是想通了,需要的时候再去查就好了
回复

使用道具 举报

🔗
 楼主| eve2ada 2017-9-12 14:19:09 | 只看该作者
全局:
clfhaha1234 发表于 2017-9-12 01:13
过来凑个热闹

1、Python 底层也是用 C/C++实现的把,使用函数的时候最好知道底层实现方式,这样被问时 ...

感谢回复。
对,我想的也是,就算用builtin函数,也尽量把其实现算法搞清楚,确实发现如以前别人说过的,有时候builtin函数掩盖了一些复杂度。
对于C++和Java都是懂一点,写过一点,但刷题找工作时想以Python为主,考虑的也是Python在DS领域的重要地位。不过学无止境,主流这些语言确实都要不断学和练习才好。
回复

使用道具 举报

🔗
starcroce 2017-9-12 14:56:14 | 只看该作者
全局:
做ML Eng的话,并不是所有model都可以用sklearn / keras搞出来,ML作为一个计算密集型任务,python毕竟有先天劣势。。
就算搞了一个python的model出来,也得考虑怎么做成service,那块就跟ML没啥关系了,完全看公司当前的tech stack了,python,c++,java甚至php都有可能。。
如果有些时候要搞一下spark / hadoop,那么java还是要会一点的。。
回复

使用道具 举报

🔗
fatfatjoey 2017-9-12 15:26:31 | 只看该作者
全局:
eve2ada 发表于 2017-9-12 13:57
感谢回复
想问下Machine Learning Engineer是必须要精通C++么?实际工作中什么情况下一定要用C ...

懂一种静态类型语言是必须的,但不一定要是C++,从来没听说过必须要懂C++的说法。

刷题到底要不要用builtin函数完全取决于题目,就你举的这个例子来说,builtin一行就出来了,显然不是要考你这个而是要考你具体的array操作。但像有些复杂的题目,甚至可以直接用bisect,因为考点不在这些基础操作上。刷题又不是考试,如果发现自己误用了builtin函数,那就再重刷一遍咯。到面试的时候这些都要问面试官,要灵活对待。

回复

使用道具 举报

🔗
Mitochondria 2017-9-12 23:16:08 | 只看该作者
全局:
本帖最后由 Mitochondria 于 2017-9-12 23:24 编辑
shuyangsheng 发表于 2017-9-12 15:26
懂一种静态类型语言是必须的,但不一定要是C++,从来没听说过必须要懂C++的说法。

刷题到底要不要用bu ...

主要看贾扬清说他们招人必会C++和python
各种平台上关注的大佬提到python和C++这对组合的概率也明显比其它的高 所以默认要会C++了
当然作为research scientist的话 肯定是根据情况使用最恰当的语言

回复

使用道具 举报

🔗
 楼主| eve2ada 2017-9-13 00:57:40 | 只看该作者
全局:
starcroce 发表于 2017-9-12 01:56
做ML Eng的话,并不是所有model都可以用sklearn / keras搞出来,ML作为一个计算密集型任务,python毕竟有先 ...

感谢回复。
有道理,Python作为modeling或者prototype应该是很方便快捷的,但要做进product的feature,可能确实弱了一点,所以Java或者C++也是需要会的。
但刷题和面试算法题的时候以Python为主,应该没有问题吧?
再次感谢:)
回复

使用道具 举报

🔗
 楼主| eve2ada 2017-9-13 01:00:46 | 只看该作者
全局:
shuyangsheng 发表于 2017-9-12 02:26
懂一种静态类型语言是必须的,但不一定要是C++,从来没听说过必须要懂C++的说法。

刷题到底要不要用bu ...

非常感谢,这个分情况看和现场沟通确实很重要,我也是做到这个题的时候觉得builtin实在太简单了,如果面试考算法题就这么回答,总觉得不大对劲,所以就想提出来问问大家,以免自己一开始就走错路。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表