热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

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

作者: Elena Nisioti  编译: Mika


前言

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

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


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

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

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


01 MATLAB


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

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

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

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

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

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



02 WEKA


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

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

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

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

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


03 R


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

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

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

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

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


04 C++


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

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

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

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

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

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

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


05 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年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • 初探PLC 的ST 语言转换成C++ 的方法
    自动控制软件绕不开ST(StructureText)语言。它是IEC61131-3标准中唯一的一个高级语言。目前,大多数PLC产品支持ST ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • 恶意软件分析的最佳编程语言及其应用
    本文介绍了学习恶意软件分析和逆向工程领域时最适合的编程语言,并重点讨论了Python的优点。Python是一种解释型、多用途的语言,具有可读性高、可快速开发、易于学习的特点。作者分享了在本地恶意软件分析中使用Python的经验,包括快速复制恶意软件组件以更好地理解其工作。此外,作者还提到了Python的跨平台优势,使得在不同操作系统上运行代码变得更加方便。 ... [详细]
  • 本文讲述了作者从最初对软件工程的选择迷茫到逐渐喜欢并坚持学习的经历。作者在大学期间通过学习专业课和参与项目开发,不断挑战自己并取得成就感。虽然曾考虑过转专业和复读,但最终决定坚持学习软件工程,并为自己的未来努力奋斗。作者还提到了大学生活与自己最初的预期不同,但对此并没有太多抱怨。 ... [详细]
  • c语言基础编写,c语言 基础
    本文目录一览:1、C语言如何编写?2、如何编写 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 从零学Java(10)之方法详解,喷打野你真的没我6!
    本文介绍了从零学Java系列中的第10篇文章,详解了Java中的方法。同时讨论了打野过程中喷打野的影响,以及金色打野刀对经济的增加和线上队友经济的影响。指出喷打野会导致线上经济的消减和影响队伍的团结。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 2022年的风口:你看不起的行业,真的很挣钱!
    本文介绍了2022年的风口,探讨了一份稳定的副业收入对于普通人增加收入的重要性,以及如何抓住风口来实现赚钱的目标。文章指出,拼命工作并不一定能让人有钱,而是需要顺应时代的方向。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
author-avatar
天蝎完美_主义
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有