像数据科学家同样思考:12步指南(中)

像数据科学家同样思考:12步指南(上)

7-工程产品

下一步是创建统计软件。若是统计是分析和从数据中得出结论的框架,那么软件就是将这个框架付诸行动的工具。数据科学家必须为任何项目作出许多软件选择。若是你有一个喜欢的软件,这一般是一个不错的选择,可是有充分的理由去挑选别的东西。若是你是数据科学或统计软件的新手,或许很难找到一个起点。数据库

电子表格和基于GUI的应用程序一般是执行任何类型数据分析的首选。特别是若是数据是表格形式的,例如CSV,而且数据不是太多,那么在电子表格中开始分析就很容易了。此外,若是你须要进行的计算并不复杂,那么电子表格甚至能够涵盖项目的全部软件需求。这里经常使用的软件工具包括Excel、SPSS、Stata、SAS和Minitab。学习这些中级工具之一的编程语言多是学习真正的编程语言的一个很好的一步,这些语言自己就很是有用。特别是SAS在统计行业中拥有普遍的追随者,学习它的语言自己就是一个合理的目标。编程

MATLAB是一种专有的软件环境和编程语言,并且MATLAB的成本至关高。有些人决定在一个名为Octave的开源项目中复制它。随着Octave的成熟,它在可用功能和功能方面愈来愈接近MATLAB。除了使用附加软件包(工具箱)的代码以外,用MATLAB编写的绝大多数代码均可以在Octave中工做,反之亦然。数组

总的来讲,MATLAB和Octave很是适合在信号处理、通讯、图像处理和优化等方面使用大型矩阵的工程师(特别是电气工程师)。浏览器

R语言是基于贝尔实验室S编程语言建立的。它是开源的,但其许可证比Python和Java等其余流行语言更具限制性,特别是你正在构建商业软件产品时。与MATLAB相比,R中更容易加载和处理不一样类型的数据。MATLAB擅长处理表格数据,但通常来讲,对于包含标题、混合列类型(整数,小数,字符串等)、JSON和数据库查询的表,R更好。安全

R的另外一个优势是开源,开发人员能够更轻松地在他们认为合适的地方为语言和包开发作出贡献。这些开源贡献帮助R大幅增加并扩展了与其余软件工具的兼容性。CRAN网站提供了数以千计的R包,你能够找到你想要进行的分析类型的软件包,这是R语言的最大优点。MATLAB也有包,但不是不少,尽管它们一般很是好。整体而言,对于统计学家和其余追求数据探索性工做而不是在软件行业中构建生产软件的人来讲,R是一个不错的选择。网络

Python是一种功能强大的语言,可用于编写脚本和建立生产软件。它更适合非统计任务,例如与其余软件服务集成,建立API和Web服务以及构建应用程序。可能由于Python最初是一种通用编程语言,它有一个强大的面向对象设计框架。框架

尽管Python最初并非一种专门用于统计的语言,但有些人已经为Python开发了几个软件包,这些软件包提高了它的统计能力,如今足够与R和MATLAB竞争。在使用向量、数组和矩阵时,数值方法的numpy包是必不可少的。软件包scipyscikit-learn在优化、集成、集群、回归、分类和机器学习等功能中很受欢迎。使用了这三个软件包,Python能够与R和MATLAB的核心功能相媲美,在某些领域,例如机器学习,Python彷佛在数据科学家中更受欢迎。对于数据处理,pandas已经变得很是受欢迎。机器学习

然而,数据科学中最著名的Python包之一是Natural Language Toolkit(NLTK)。它是天然语言处理(NLP)中最受欢迎和最强大的工具。若是有人正在从Twitter、新闻源、电子邮件语料库或其余地方解析和分析文本,那么他们极可能已经使用了NLTK。总的来讲,Python很是适合想要进行一些数据科学以及其余一些纯粹的非统计软件开发的人。编程语言

虽然Java不是脚本语言,不太适合探索性的数据科学,但Java是软件应用程序开发中最著名的语言之一,所以它常常用于分析应用程序开发。致使Java不利于探索性数据科学的许多缘由使其更有利于应用程序开发。Java对于探索性数据科学来讲并非很好,但它对于基于数据科学的大规模或生产代码来讲很是有用。Java有许多统计库,可用于从优化到机器学习,其中许多都是由Apache Software Foundation提供和支持的。工具

在选择统计软件工具时,请牢记如下标准:

  • 灵活性:除了可以执行你想要的主要统计分析以外,若是统计工具能够执行一些相关方法,一般也会有所帮助。一般你会发现你选择的方法并不像你但愿的那样好,并且你在这个过程当中学到的东西会让你相信一种不一样的方法可能会更好。
  • 良好的文档:除了经常使用以外,统计软件工具应该有全面而有用的文档。若是你没法找到一些重要问题的答案,例如如何配置进行线性回归的输入或如何格式化机器学习功能,这是一个很差的迹象。若是大问题的答案不在文档中,那么找到你将不可避免地遇到的更具体问题的答案就更难了。
  • 专用:某些软件工具或其软件包是为特定目的而构建的,以后又添加了其余功能。例如,MATLAB和R中的矩阵代数例程在构建语言时是主要关注的问题,所以能够安全地假设它们是全面且健壮的。相比之下,矩阵代数在初始版本的Python和Java中并非主要关注的问题,所以这些功能稍后以包和库的形式添加。
  • 互操做性:若是你正在使用数据库,那么使用能够直接与数据库交互的工具会颇有帮助。若是你要根据结果构建Web应用程序,则可能须要选择支持Web框架的工具或者至少可使用JSON或其余一些Web友好格式导出数据的工具。若是你将在各类类型的计算机上使用统计工具,那么你将但愿该软件可以在各类操做系统上运行。
  • 许可证:若是你将商业软件用于商业目的,那么使用学术或学生许可这样作具备法律风险。将商业软件(不管是否通过修改)出售给其余人而不确认许可证是否禁止此类软件也是危险的。

8-优化产品

接下来咱们就须要使用补充软件优化产品。咱们在上一步中建立的软件工具能够是多功能的,但它们本质上是统计的。软件能够作的不只仅是统计数据,特别是,有许多工具可用于有效地存储,管理和移动数据。有些可使计算和分析的每一个方面都更快且更容易管理。这里有4种流行的软件,可使你做为数据科学家的工做更轻松。

数据库很常见,在项目期间跨越不一样数据库的可能性至关高,特别是若是你要使用其余人的数据。可是,固然不是仅仅接触,而是本身创建一个数据库来帮助你完成项目。最多见的两种类型是关系型(SQL)和非关系型(NoSQL,ElasticSearch),与将数据存储在计算机的文件系统上相比,数据库具备许多优点。大多数状况下,数据库能够提供对数据的任意访问且比文件系统更快,而且它们还能够经过冗余方式扩展,这种方式优于文件系统扩展。

高性能计算(HPC)是一个通用术语,适用于须要进行大量计算而且但愿尽快完成计算的状况。你能够选择使用超级计算机计算机集群图形处理单位(它们很是适合执行高度可并行化的计算)。若是你有权访问,那么HPC是等待PC计算全部须要计算的东西的好选择。使用HPC产品的好处有不少,可是在你选择以前你必需要衡量一下成本。

最大的云服务提供商主要是大型科技公司,例如阿里巴巴、谷歌和微软等公司在向公众开放以前都已经拥有大量的计算和存储资源。但他们并不老是将资源用到最大负荷,所以他们决定出租过剩的产能并扩大其收益,结果证实这是一系列有利可图的商业决策。提供的服务一般大体至关于我的计算机,计算机集群或本地网络的功能。全部这些能够在世界各地的地理区域中得到,可经过在线链接和标准链接协议访问,以及一般是Web浏览器界面。若是你没有足够的资源来充分知足你的数据科学需求,你能够选择尝试购买云服务。

最后,你能够尝试大数据技术:Hadoop,HBase和Hive等。大数据技术的设计不是为了移动数据,而是当数据集处于很是大的规模时,利用大数据技术能够节省大量的时间和金钱。每当计算任务受数据传输限制时,大数据能够提升效率。可是,与本章中描述的其余技术相比,大数据系统软件须要花费一些精力。

9-执行计划

构建阶段的最后一步是执行产品的构建计划。大多数软件工程师可能熟悉构建复杂软件的试验和磨难,但他们可能不熟悉构建处理可疑质量数据的软件的难度。另外一方面,统计人员知道拥有脏数据的状况,但可能没有创建更高质量软件的经验。一样,与项目相关的不一样角色的每一个人可能拥有各类经验,并为不一样的事情作好准备。

  • 若是你是一名统计学家,你会知道有脏数据,并且你知道误差和夸大结果的重要性。但你可能没有太多经验来构建业务软件,特别是生产软件。你应该咨询具备实践经验的软件工程师,以了解如何提升软件的稳健性。
  • 若是你是软件工程师,你知道开发生命周期是什么样的,而且你知道如何在部署和交付以前测试软件。可是你可能不了解数据,不管你在软件设计和开发方面有多好,数据最终都会以你从未想过的方式破坏你的应用程序。这须要在构建软件时采用新的思惟模式以及对错误有容忍度,由于它们会频繁地发生。你应该咨询精通预测和处理有问题数据的统计人员,例如异常值,缺失值。
  • 若是你刚开始从事数据科学,没有丰富的统计学或软件工程经验,若是你能够向他们解释你的项目和目标,那么有经验的人能够向你提供一些可靠的建议。做为一个初学者,你在这个过程阶段有职责来弥补经验的不足。
  • 若是你只是该项目的一个团队成员,那么沟通和协调是相当重要的。你没必要了解团队中发生的全部事情,但有必要明确目标和指望,并确保有人管理整个团队。

设计计划应包含多个路径和选项,全部这些都取决于项目的结果、目标和期限。不管计划有多好,随着项目的进展,总有可能对其进行修订。即便你考虑到全部不肯定因素而且意识到每一种可能的结果,计划范围以外的事情也可能会发生变化。计划须要改变的最多见缘由是新信息从项目外部的来源出现,而且计划的一个或多个路径发生变化或目标自己发生变化。

随着项目的进展,你一般会看到愈来愈多的结果积累,让你有机会确保它们符合你的指望。通常而言,在涉及统计的数据科学项目中,指望基于统计显著性的概念或基于这些结果的实际有用性概念。统计意义和实际有用性一般密切相关,固然不是相互排斥的。做为项目计划的一部分,你可能包含了在统计分析结果中达到某种准确性或重要性的目标,实现这些目标将被视为该项目的成功。



本文做者:【方向】

阅读原文

本文为云栖社区原创内容,未经容许不得转载。

相关文章
相关标签/搜索