前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据科学家:那些年,我都学过哪些编程语言…

数据科学家:那些年,我都学过哪些编程语言…

作者头像
CDA数据分析师
发布2018-09-17 15:22:16
7780
发布2018-09-17 15:22:16
举报

作者: Elena Nisioti

编译: Mika 本文为 CDA 数据分析师原创作品,转载需授权

我们对事物的看法各不相同,有时他人特别喜欢的语言可能会成为另一个人的的噩梦。而我个人的噩梦是用C语言进行日常的编程工作。

本文就介绍了作为数据科学家,我在职业生涯中所学过的语言,其中包括MATLAB、Weka、R、C ++以及Python。

数据科学是一个广泛的领域,从业者来自各种专业背景,如经济学,生物学和语言学等等。尽管数据科学最初源于统计领域,但它很快覆盖了计算机科学领域,如今数据科学已成为了必不可少的工具。

因此,用于数据科学的编程语言的发展就像宇宙一样:可能穷其一生都难以完全探索,并且还在不断扩展。

众做周知,语言的通用性、用途和复杂性需要权衡利弊。因此,一门语言的流行程度仅应作为当前趋势的一个指标,而不是决定你选择的因素。归根结底,这是涉及到应用、经验和个人偏好的问题。

MATLAB

通过吴恩达的机器学习课程,我开始接触机器学习领域。如果你也想学习机器学习,这是一个很不错的选择。

虽然当时Python和R语言更受欢迎,但吴恩达在课程中选择了MATLAB。当时我并没有觉得有什么困扰,但如今看来有些奇怪。数据科学课程的侧重点应该在于如何进行数据分析,而不是使用某种语言进行分析。

吴恩达在这门课程中选择了比较通用的MATLAB语言,原因之一在于该课程的受众主要是计算机专业的科学家和工程师,他们已经很熟悉MATLAB了。而且该课程的重点是,在不使用库的情况下实现学习算法,因此MATLAB与任何专业语言一样出色。

虽然我很推崇自动化工具和便捷型库,但在开始进入数据科学领域时,自己动手这一点也是十分重要的。

MATLAB不缺少执行各种数据分析和机器学习任务的库。对于信号处理和控制工程师等人来说,它是首选框架。

但不难理解为什么MATLAB没有征服数据分析领域,毕竟它不开源,且非常昂贵的。至于Octave,虽然开源且能兼容MATLAB代码,但性能却远远不及MATLAB。

WEKA

我学习Weka的经历是短暂的。在大学时期,Weka作为我完成模式识别课程作业一种工具。

通过这个课程,我得到最有价值的教训是:GUI对数据科学家的影响是深远的。Weka以其易用性和可理解性引以为豪,并声称只需加载数据集并按下按钮就可以轻松训练机器学习模型。这当中的益处也是显而易见的,当时市场对预测模型的需求很大,而且能够满足这种需求的人才并不多。

寻找自动化工具并使用得出解决方案是当时的研究重点,即AutoML。但我们花了几年时间,并经历过大量失败才意识到,这一过程离不开人类的参与。

在上世纪90年代末,那种认为没有充分理解数据就能构建模型的幻想破灭了。自动化工具能够简化我们的工作,发现算法的良好参数化、实用的预处理步骤以及高效的测试管道。但它们不能替代人类专家,至少是我们目前的专业水平。

总而言之,你需要对创建的模型负责。

R

在我的毕业论文中,我深入研究并探索了R语言的特性和奥妙。你可能听说过,R语言是数据分析语言家族中的一个特殊的语言。R语言学习起来并不容易,这需要一个学习过程,在刚开始学习时我常常会感到自我怀疑和迷失方向。

我们的目标是创建能够自动执行机器学习实验的软件工具。R更像是一种目的,而不是一种手段,因为我们希望通过使用丰富的R语言库对机器学习技术进行广泛的研究。

当时我想要构建完整的框架,并且在毕业设计中利用面向对象编程,因此必须解决的第一个问题是:R语言是否支持面向对象?答案是肯定的。实际上,它有四种不同的方式。这些都与我在C ++,Java或Python中遇到的面向对象编程并不相同。

R语言还提供了许多方便的工具,例如data.frames,它能够轻松捕获数据集的特征和需求。但是,R语言中也有一些的技术性问题让我感到头疼。RStudio是R的免费UI,当绘图不适合其平面时,就会引发运行时错误等等。

虽然我再也不会尝试用R语言中从头开始构建框架,但R语言提供的大量软件包可以助你进行可视化和预处理,这些都是很不错的优势。

C ++

现在你肯定会问,为什么要用C ++进行数据分析?为什么有人这样做?

暑期我曾在一家公司实习,该公司用的就是C ++,我猜测公司也许是考虑到传统和商业的结合,因此选择了能够高效执行的代码。

尽管如此,我仍决定使用R语言。在实习结束时,我再将模型和函数转移到C ++。由于有各种图表和出众的预处理技术,R语言也引起了公司里用C ++做数据分析的人的注意,一些同事甚至对R感兴趣并开始尝试它。

在获得满意的结果后,通过使用简单的R包用于PCA和支持向量机,我尝试将模型合并到庞大的C ++框架中。libsvm 软件包很适合这种情况,并能提供与支持向量机相关的操作。

如今,当你想要跨语言转移机器学习模型时,存在很多选择。比如你可以转移数学模型,即算法的参数化,然后通过跨库转换模型文件,或使用包跨语言进行交互。

我发现,简单地使用相同的参数化是不够的。虽然算法保持不变,比如具有高斯核的SVM, 不同的实现可能采用不同的数学模型,因此需要不同的参数集。即使模型保持不变,特定的实现因素也会严重影响模型的性能,因此需要不同的参数化。

最合适的方式是使用rcpp,一个能连接C ++框架和R脚本的包。一些软件包也支持两种不同语的库之间的兼容性,但很少用于这种情况。

Python

我与现任公司主管之间曾有过这样的对话:

—— 在未来的工作中你打算使用哪种语言?

——我想我会用Python。

——你曾用过Python吗?

——不,我用过很多语言,但我对Python有不错的预感。

很高兴我说服了他,如今我使用Python进行数据分析十分舒心。易于设置实验,附加功能以及丰富的库带来的便利性让我的工作非常顺利。虽然我主要自己编写代码,但到目前为止,我常常通过OpenAI Gym 来定义强化学习实验环境。同时还有TensorForce,这是一个扩展TensorFlow的库,能提供了大量的强化学习算法。

不过,我的意思并不是指Python就是无敌的。程序员不应该局限于某种语言,而是应该不断地尝试。因此,下次当你遇到新数据集时,不要害怕尝试新的软件。就算失败了,你也会从中有所收获。

原文链接:

https://medium.freecodecamp.org/a-personal-journey-through-the-languages-of-data-science-48f516cbb81c

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CDA数据分析师 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档