数据百问系列:经典数据结构和算法在数据科学中的作用?

0x00 前言

问题

经典数据结构和算法在数据科学中的作用?

话题整理者:未期,某不知名大学透明本科生,GIS背景。画过地图,写过代码,热爱统计。目前在数据科学的道路上缓慢前进,希望与大家共同学习~

问题描述

平时工作中主用python,在学习数据结构与算法,例如二叉树、图等python中都没有,工作中也用不上。

那么对于数据方面的从业者,除了应对笔、面试,学习这些的意义在哪里呢?

是否必要换一种语言来刷题呢?

0x01 讨论内容

讨论1

平时sql写得最多,不知道算不算数据科学。

个人感觉是对代码优化、性能优化思维的一种训练。题刷多了,写sql的时候会不自觉的考虑性能问题,算是一种习惯吧。最近一直在优化etl,看sql的执行时间发现优化空间最大的基本都是一个同事写的,他做事情基本上都很慢,感觉和这个可能有点关系,可能查一样的数据他需要的时间更多,从这个角度看是提升了我的工作效率。

至于刷题语言,建议java,或者能找到参考资料最多最全的语言来刷,成本最低,python算法的好像真不多,或者高质量的不多,也或者是我不知道。

讨论2

算法感觉会提供解决问题的不同思路,我对算法没研究,只是听同事分享后的感觉。

sql优化只是牵扯到执行计划级别,除非研究hash join ,nast loop等连接方式(以Oracle数据库为例)的原理,才会涉及到算法。

另,歪下题,最好的优化就是从业务需求级别分析,不需要写很复杂的sql,或不需做sql统计。

讨论3

  1. 学习数据结构对于从事数据挖掘和算法类的工作是必须的。工作中不会直接用到数据结构,因为我们主要用的是机器学习算法。但是学习这些会让你的代码写的更加优雅,这个对于算法的项目开发是很有帮助的。

  2. 面试时如果要手撕代码,和你用哪种语言并没有什么关系。但是对于数据挖掘来说,python还是主流语言,能再多掌握一下java会更好。

讨论4

个人觉得学习数据结构和算法主要是理解这种思想,解决问题的原理,提高代码的质量和程序的效率。

现在的学习不一定会对工作有很大的作用,但是今后突然遇到一个问题需要这种思想去解决的时候,就晚了,特别是从事领域比较偏或者解决问题比较深入,数据结构和算法就会越突出,越重要,带来的体量也就越大。

讨论5

数据结构刷题更多的是对编程思维的培养,让你能较好地掌握一门语言,同时也能让你学会编写高质量的代码,以及解决问题的思路。其实这是内功的修炼,如果要程序员一直做的话,数据结构是必须的,短期内看不到效果,长期你与别人的差距越来越明显。同样sql本质也是一种处理数据的逻辑思维,主要是你是否具备这种思维能力,而不在语言本身。算法的本质也一样,解决问题的方法,这种思想学会后,是否能在我们项目工程中迁移运用,这才是关键。

讨论6

学习数据结构对于从事数据挖掘和算法类的工作是必须的。

工作中不会直接用到数据结构,因为我们主要用的是机器学习算法。而机器学习算法也是人构造出来的,比较直接的表层应用技术而已。学习数据结构也就相当于了解数据挖掘的原理,那么具体用到哪种机器模型以及怎么检验机器模型就有很大的帮助,就类似于了解了本质,对于不同的表象只是换了一身皮囊而已,怎么会没有用呢?当你只知道认识不同的皮,却不知道是同一个孙悟空变得,那么你就需要知道72个幻化的孙悟空的样子,不如只研究一个孙悟空来的痛快啊!

借鉴了某些同学的话哈!

0xFF 总结

这个问题来自于群友在群里的提问,相信很多朋友在开始学习数据结构和算法时或者工作初期都有过相似的困惑,以下是结合大家的讨论内容和笔者的个人理解,得出的几点结论。

  1. 编程思维的培养

    数据结构和算法能反映出一个人的思考能力和逻辑思维。

    开发工程师需要做的是把现实问题转化为计算机语言表示,而算法实际上是对碰到的实际问题的抽象。我们看到的算法,是经过了从实际问题 -> 多种解决方法的尝试 -> 思维的抽象化的过程

    所以,现在学习的内容,也许当下的工作中遇不到,但是在今后随着解决问题的深入或者从事领域更加广泛,数据结构和算法的作用也会愈加凸显。

  2. 代码效率的优化

    如果在一家成熟的公司,面对是可能是TB、PB级的数据,代码性能的优化是时刻需要考虑的问题。一个简单的选择,也许会产生上万倍的差距。**能够理解并熟悉运用各种数据结构和算法,是深度优化程序性能的基础。**经过算法题的训练,在工作中会养成考虑性能问题的习惯;一定程度上会提高工作效率。

  3. 更好地理解原理和框架

    现在技术更新迭代迅速,各种框架、开源库层出不穷。但在这些炫酷的外衣下,本质还是最基本的知识。掌握了这些核心内容之后,无论表象如何变化,你都能迅速理解其中原理

    在数据科学中,以主要用的机器学习算法为例,学习数据结构能够帮助你选择具体用到哪种机器学习模型以及怎么检验机器模型,也会让你的代码写得更加优雅,有助于项目的开发。

  4. 面试

    最后,这是十分现实的一点,但也是必须面对的情况。随着行业的成熟和饱和,对低层次人才的需求只会越来越少。

    对某些大厂,数据结构和算法几乎是面试必考,达不到要求就会直接挂掉;而对另一些不作硬性要求的公司或者岗位,如果能流畅地答出算法题,那也是加分项。

下期讨论话题

如何找到第一个拿得出手的数据分析项目经历?

应聘数据分析岗,写简历时最头大的就是如何写项目经历了,各类编程工具用地再好,没有实际的数据分析项目经历也很难说服别人自己能够胜任工作。困难在于,不论对于转行的新人,还是BI/数仓等转岗的朋友,日常工作中其实并没有什么机会去接触一线的数据分析项目,那么要如何拥有第一份拿得出手的经历呢?数据科学比赛项目可以吗?希望大家能够多多分享经验。

欢迎大家到知识星球参与讨论,每期话题将会奖励一位优秀回答者一本自选100元以内的书籍!!点击【阅读原文】参与讨论!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值