1.3.1 脚本语言软件
典型脚本语言软件包括R、Python、MATLAB等,依靠编程脚本、交互式开发和大量工具包支撑分析建模。
R是一套完整的数据处理、计算和制图软件系统。R语言有着完整数据读取、预处理、统计分析、机器学习、制图/报告等功能的编程语言,R语言的优势在于统计分析,有1万多个官方工具包,对统计分析、机器学习算法和周边效率工具的支持非常完善。R语言的核心数据类型是数据框(Data Frame),同时也支持矩阵或向量运算,数据框类似于关系数据查询组件中的recordSet,是由有相同属性列构成的记录集,不同列的类型可以不同。数据框的概念也逐步被Python(2008年发布第1版pandas包)、MATLAB等软件采纳。为提高计算能力,R语言也提供了C、C++、Fortran等语言的开发接口。RStudio作为R语言最常用的IDE(集成开发环境),提供了很多便捷性的交互式开发调试功能,也支持Python、C/C++、HTML、Markdown等语言的开发。
MATLAB是著名的科学计算软件包,对矩阵运算、数值分析、图形显示和工程分析算法(如控制系统设计、信号处理)支持非常完备,动力学仿真包Simulink不仅仅支持连续动力学系统的仿真,也支持离散事件系统的仿真,除了数值仿真,也支持半物理仿真(通过PLC、通信协议接口)。在机器学习方面,MATLAB从2018年开始提供了Statistics and Machine Learning Toolbox。
Python是一种跨平台的高级编程语言,可以应用在多个领域,尤其是深度学习领域。Python拥有numPy、sciPy、matplotlib等科学计算包,也有scikit-learn、pandas等机器学习算法包。Python常用的IDE包括Spyder、pyCharm,也可以使用Vscode、Eclipse通用环境的Python插件。在交互式分析上,Jupyter notebook或Jupyter lab可以将分析过程与文档工作同步进行。
由于Python底层是使用C语言写的,很多标准库和第三方库也是用C语言写的,因此相比R语言和MATLAB来说、Python的速度要更快,可移植性更强。但在统计算法和机器学习算法方面,R语言更丰富一些。需要注意,不要不加前提地对比运行速度,MATLAB、R、Python语言背后的矩阵运算都是基于BLAS、LAPACK等线性运算包(基于Fortran或C语言实现的,不同实现版本略有不同),如果采用内置的矩阵运算,MATLAB、R、Python语言之间的差别应该是很小的。因此,编程时应该尽量遵循一个软件的前提假设与推荐习惯,例如,在MATLAB中尽量采用矩阵或向量运算,避免用标量循环。在R中,尽量用内置的数据框操作函数,避免用循环。