业界 | 四大机器学习编程语言对比:R、Python、MATLAB、Octave
R 语言
R 是一种用于统计计算和图的语言及环境。它是一个 GNU 项目,与贝尔实验室的 John Chambers 及其同事开发的 S 语言及环境类似。R 可以视为 S 的一种不同实现。二者存在一些重要差异,但使用 S 写的很多代码在 R 下运行时无需修改。
优点:
● 端到端开发到执行(一些 brokers package 允许执行,IB)● 开发速度快(比 Python 的代码少 60%)
● 开源包多
● 成熟的量化交易包(quantstrat、quantmod、performanceanalyitics、xts)
● 社区最大
● 使用 rcpp 可以整合 R 和 C++/C
缺点:
● 比 Python 慢,尤其是在迭代循环和非向量化函数中● 比 Matlab 绘图差,难以实现交互式图表
● 创建独立应用程序的能力有限
Python
Python 是一种用于通用编程的解释型高级编程语言,由 Guido van Rossum 创建并于 1991 年首次发布。Python 的设计强调代码可读性,使用了大量空格。它的结构使其在大规模和小规模编程中都能清晰明了。
优点:
● 端到端开发到执行(一些 brokers package 允许执行,IB)● 开源包(Pandas、Numpy、scipy)
● 交易包(zipline、pybacktest、pyalgotrade)
● 最适合一般编程和应用程序开发
● 可连接 R、C++ 和其他语言的「胶水」语言
● 总体速度最快,尤其是在迭代循环中
缺点:
● 有一些不成熟的包,尤其是交易包● 有些包与其他包不兼容或包含重叠
● 在金融领域的社区比 R 小
● 与 R 或 Matlab 相比,相同操作需要更多代码
● 追踪静默错误(silent error)可能需要很长时间(即使使用可视化调试器/IDE)
MATLAB
MATLAB(matrix laboratory)是一种多范型数值计算环境。作为 MathWorks 开发的一种专用编程语言,MATLAB 允许矩阵运算、函数和数据绘图、算法实现、用户界面创建,以及与用其他语言(包括 C、C++、C#、Java、Fortran、Python)写成的程序进行交互。
尽管 MATLAB 的设计初衷是数值计算,但其中的可选工具箱使用 MuPAD symbolic engine,具备符号计算能力。额外的包 Simulink 添加了图多领域模拟和针对动态和嵌入系统的基于模型的设计。
优点:
● 最快的数学和计算平台,尤其是向量化运算/线性矩阵代数。● 适合所有数学和交易领域的商业级软件。
● 脚本简短,但高度集成了所有包。
● 拥有图和交互式图表的最佳可视化
● 具备良好测试和支持。
● 易于管理多线程支持和垃圾收集
● 最好的调试器
缺点:
● 无法执行,必须转换成另一种语言。● 昂贵:每个 license 大约 1000 美元,每添加一个包需要额外支付 50+ 美元。
● 无法与其他语言很好地集成。
● 很难检测出交易系统中的偏差(它是为数学和工程模拟而构建的),因此可能需要广泛的测试。
● 糟糕的迭代循环性能。
● 无法开发单独的应用。
Octave
Octave 可以看作是商业语言 MATLAB 的 GNU 版本,它是一种脚本矩阵语言(scripting matrix language),其语法有大约 95% 可与 MATLAB 兼容。Octave 由工程师设计,因此预装了工程师常用的程序,其中很多时间序列分析程序、统计程序、文件命令和绘图命令与 MATLAB 语言相同。
优点:
● 首先,目前没有可用的鲁棒性 Octave 编译器,且没有必要有,因为该软件可以免费安装。● Octave 和 Matlab 的语言元素相同,除了一些个例,如嵌套函数。Octave 仍然处于积极开发的状态,每一个偏离 Matlab 语法之处都被视为 bug 或者至少是待解决问题。
● Octave 有很多可用工具箱,只要程序不要求图输出,那么在不进行大量更改的前提下,使用 Octave 运行和使用 Matlab 运行差不多。
● 图方面的能力是 Matlab 的优势。Matlab 最新版本包括 GUI 设计器,包含大量很棒的可视化特征。
● Octave 使用 GNU Plot 或 JHandles 作为图程序包,JHandles 与 Matlab 中的图程序包更接近一些。但是,Octave 不具备类似 GUI 设计器的组件,其可视化机制很受限且不与 Matlab 兼容。
● 集成开发环境也是类似的情况:Octave 有一个 QTOctave 项目,但仍处于早期阶段。
● Octave 社区的合作很可能帮助该软件很快提供更好、更兼容的图以及 GUI 能力。
缺点:
● 它只是 MATLAB 的免费开源版本,无法带给用户新的东西。
下表列举了数据科学家和机器学习工程师的常用工具,读者可以查看这些工具的流行度。
原文发布时间为:2018-11-7本文作者:MJ Bahmani本文来自云栖社区合作伙伴“ CDA数据分析师”,了解相关信息可以关注“ CDA数据分析师”。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
兄弟连区块链教程Fabric1.0源代码分析Tx(Transaction 交易)一
区块链教程Fabric1.0源代码分析Tx(Transaction 交易)一,2018年下半年,区块链行业正逐渐褪去发展之初的浮躁、回归理性,表面上看相关人才需求与身价似乎正在回落。但事实上,正是初期泡沫的渐退,让人们更多的关注点放在了区块链真正的技术之上。 Fabric 1.0源代码笔记 之 Tx(Transaction 交易) 1、Tx概述 Tx,即Transaction,交易或事务。 Tx代码分布目录结构如下: protos/common/common.pb.go,交易的封装即Envelope结构体。也包括Payload、Header、ChannelHeader和SignatureHeader。 protos/utils目录,交易相关部分工具函数,包括txutils.go、proputils.go和commonutils.go。 core/ledger/kvledger/txmgmt目录* rwsetutil目录,读写集相关结构体及方法。 * version目录,version.Height结构体及方法。* validator目录,Validator接口及实现。* txmgr目录...
- 下一篇
一次毕生难忘的 Java 内存泄漏排查经历
人人都会犯错,但一些错误是如此的荒谬,我想不通怎么会有人犯这种错误。更没想到的是,这种事竟发生在了我们身上。当然,这种东西只有事后才能发现真相。接下来,我将讲述一系列最近在我们一个应用上犯过的这种错误。最有意思的是,一开始的迹象揭示的问题,与实际发生的问题完全不同。 在一个凄凉的午夜 午夜刚过,我就被一条来自监控系统的警报吵醒了。Adventory,我们的 PPC (以点击次数收费)广告系统中一个负责索引广告的应用,很明显连续重启了好几次。在云端的环境里,实例的重启是很正常的,也不会触发报警,但这次实例重启的次数在短时间内超过了阈值。我打开了笔记本电脑,一头扎进项目的日志里。 一定是网络的问题 我看到服务在连接 ZooKeeper 时发生了数次超时。我们使用 ZooKeeper(ZK)协调多个实例间的索引操作,并依赖它实现鲁棒性。很显然,一次 Zookeeper 失败会阻止索引操作的继续运行,不过它应该不会导致整个系统挂掉。而且,这种情况非常罕见(这是我第一次遇到 ZK 在生产环境挂掉),我觉得这个问题可能不太容易搞定。于是我把 ZooKeeper 的值班人员喊醒了,让他们看看发生了什...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8编译安装MySQL8.0.19
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2全家桶,快速入门学习开发网站教程
- CentOS7,CentOS8安装Elasticsearch6.8.6