引言
上半年本人在弄毕业设计时负责的是一个与 Python 数据分析相干的课题,最终获得了个不错的问题,感觉其中的技术计划选型局部很有分享进去的价值,对在科学计算(当初风行的说法是数据迷信)方面还是只知其一; 不知其二的人起到一个入门科普的作用,故撰写此文。
2.1.1 科学计算编程语言的比拟
MATLAB 语言介绍:
Matlab 是 MathWorks 公司开发的科学计算软件,软件模式为本体加扩大工具箱。它具备弱小的矩阵计算和数据可视化能力,一方面能够实现数值剖析、优化、统计偏微分方程数值求解、自动控制、信号处理等多个畛域的数学计算,另一方面能够实现二维、三维绘图、三维场景生成和渲染、科学计算可视化、图像处理、虚拟现实与地图制作等性能 [13]。不过,值得注意的是 MATLAB 是商业性软件,软件售价不菲,而且就软件社区生态来看,目前在数据迷信畛域越来越不受待见。以“MATLAB Machine Learning”和“python machine learning”作为关键词在谷歌剖析中比拟 [14],如图 2.1 所示,会发现 MATLAB 的数据迷信社区活跃度远不迭 Python 数据迷信社区。从拥抱沉闷的数据迷信社区从而不便本人遇到问题时能够寻求解决方案的角度思考,应用 Python 显然更有利于课题的后续钻研倒退。
图 2.1“MATLAB Machine Learning”和“python machine learning”谷歌剖析后果比拟
R 语言介绍:
与 MATLAB 类似,R 语言用于数据处理和统计分析,为大多数统计学家所钟爱。R 语言脱胎于 AT&T 实验室开发的统计语言 S 语言,且与 s 语言根本兼容 [15]。R 语言是开源收费的,由一个宏大沉闷的全球性研究型社区保护,深受泛滥统计学家的欢送。
Julia 语言介绍:
Julia 是专门为高性能数值计算而设计的高级动静程序设计语言,它在分布式并行化、准确数值计算等方面提供了独特的反对,并蕴含了大量可扩大的数学函数库。特地是在线性代数、随机数生成、信号处理和字符串解决等畛域,Julia 集成了许多成熟的、优良的基于 C 和 FORTRAN 的开源库,具备很高的性能和效率 [16]。不过,Julia 面世于 2012 年,目前还处于蓬勃发展之中,只管前景可观,但目前在科学计算畛域的遍及度还远不如 Python。
Python 语言介绍:
Python 语言诞生于 1989 年,创始人为 Guido Van Rossum。其为一种弱类型的高级动静语言。目前最新版本为 3.9。Python 开源收费,有着非常沉闷的科学计算社区生态,社区活跃度远超 R 语言社区。由 Tiobe 公司公布的编程语言排行榜显示,Python 排行地位已跃居第三位,而 R 语言处于第九位,如图 2.2。不同于 MATLAB、R 和 Julia 等专一于科学计算畛域,Python 在 Web 利用开发畛域也备受追捧。基于 Python 编写的 Django、Flask 等 web 框架在软件开发畛域失去了大规模的利用。从易于将本课题的研究成果最终转化为特定的数据分析解决方案的角度登程,抉择 Python 作为本课题的编程语言显然较其余几种语言更有劣势。统一的语言个性,能够显著缩小将来成绩转化时的学习老本,所以本课题选用 Python3.8.2 作为统计模型构建剖析的编程语言。
图 2.2 Tiobe 编程语言排行榜历史数据
2.1.2 开发平台的比拟
PyCharm[17] 介绍:
Pycharm 是由 JetBrains 打造的 Python 集成开发环境,具备调试、语法高亮、项目管理、代码跳转、智能提醒、主动补全、单元测试、版本控制等弱小性能。PyCharm 分为社区开源版和专业版,其中专业版提供了反对 Django、Flask 等框架的 Web 开发、数据库连贯等性能。
Visual Studio Code[18] 介绍:
Visual Studio Code 是由微软公司推出的一款轻量级编辑器,其软件架构为平台加插件模式。加载 Python 插件后,Visual Studio Code 能够视为一款非常杰出的小型 Python IDE,但性能齐备性方面相较 PyCharm 还有不少间隔。不过,鉴于其齐全开源收费的个性,拥簇者甚众,社区参与度非常沉闷。
Spyder[19] 介绍:
一款面向 Python 语言的开源科学计算 IDE(Integrated Development Environment),其设计思维相似于 MATLAB,模拟了 MATLAB 的“工作空间”性能,不便察看和批改数组值。其集成了 Numpy、SciPy、Matplotlib 等科学计算软件包,内置交互式环境以解决数据,对于数据科学家来说非常敌对,且被 Python 的科学计算发行版 Anaconda 所收录。我的项目指标是促成 Python 在迷信和工程畛域的软件开发的应用。
Jupyter Notebook 介绍:
一个基于 Web 的交互式计算环境,用于创立 Jupyter Notebook 文档。不同于 Spyder 的整个 Python 文件运行后生成交互页面式的交互格调,Jupyter Notebook 的交互是基于 Python 代码块进行的,这意味着用户能够按照本人的志愿有选择性地运行某些代码块并得出后果,相较于 Spyder 具备更弱小的灵活性。和 Spyder 一样,Jupyter Notebook 也被 Python 的科学计算发行版 Anaconda 所收录。
2.1.3 数据库技术的比拟
MySQL[20] 数据库介绍:
一款高性能、低成本、可靠性好且非常风行的开源数据库,有着二十多年的历史,是目前最好的关系型数据库管理系统之一,广泛应用在互联网上的中小型网站上。随着 MySQL 的一直成熟,它也逐步被用于更多大规模的网站和利用。MySQL 目前归于 Oracle 旗下,其数据库查询语言为 SQL。
MongoDB[21] 数据库介绍:
一种面向文档的数据库管理系统,被定义为非关系型数据库,致力于为 Web 利用提供可扩大的高性能数据存储解决方案。与 MYSQL 中的表不同,它反对的查问文档的数据结构十分涣散,为相似于 JSON 的 BSON 格局,因而能够存储更为简单的数据类型。MongoDB 的特点是弱小的查询语言。它的语法遵循面向对象的思维,能够实现相似关系数据库中单表查问的大部分性能,也能够对数据进行索引。
序幕
以上内容波及到的技术栈仅仅针对数据集大小为中小规模时的状况,对于大规模或者超大规模的数据集,则须要额定借助一些大数据方面的技术栈,如 Apache Hadoop、Apache Hive 和 Apache Spark 等,还请具体情况具体分析。
参考文献
[5] MATLAB[EB/OL]. https://www.mathworks.com/products/matlab.html, 2020.05.11.
[6] R[EB/OL]. https://www.r-project.org/about.html, 2020.05.11.
[7] Julia[EB/OL]. https://julialang.org/, 2020.05.11.
[10] Anaconda[EB/OL]. https://www.anaconda.com/, 2020.05.11.
[11] Jupyter Notebook[EB/OL]. https://jupyter.org/, 2020.05.11.
[12] Christian Hill. Learning Scientific Programming with Python[M]. Cambridge University Press, 2015:160-317.
[13] (美)Holly Moore. MATLAB 实用教程(第二版)[M]. 高会生, 对童娜, 李聪聪等译. 北京: 电子工业出版社, 2010:1-2.
[14] 王树义. 学 Python,能晋升你的竞争力吗?[EB/OL]. https://www.jianshu.com/p/4445fe0a7e16, 2020.05.11.
[15] (美) 麦特洛夫 (Matloff, N.). R 语言编程艺术 [M]. 陈堰平, 邱怡轩, 潘岚锋等译, 北京: 机械工业出版社, 2013.6:1-2.
[16] 魏坤编著. Julia 语言程序设计 [M]. 北京: 机械工业出版社, 2018.10:1-2.
[17] PyCharm[EB/OL]. https://www.jetbrains.com/pycharm/, 2020.05.11.
[18] Visual Studio Code[EB/OL]. https://code.visualstudio.com/, 2020.05.11.
[19] Spyder[EB/OL]. https://www.spyder-ide.org/, 2020.05.11.
[20] MySQL[EB/OL]. https://www.mysql.com, 2020.05.11.
[21] MongoDB[EB/OL]. https://www.mongodb.com/, 2020.05.11.
(学识肤浅,仅仅介绍,抛砖引玉,如有讹误,欢送指出~)