数据科学(上)

数据科学

需求

在这里插入图片描述
首先,我们讨论对数据科学的需求。 为了理解这一点,先来说说什么是数据科学。 常见的说法是,数据科学是在实际环境中 综合运用统计和编程技巧的科学, 稍后我会详细说明。 接下来,我说说可能存在的几种其他定义。 这些都是我总结的。 我想把它看作是对多元数据的分析, 这是指不符合通用格式的数据, 以及解答重要问题时所需的数据, 无论它们来自哪里,如何构成。 更简单一点,我喜欢叫它“包容性分析”。 数据科学是包含各种数据的数据分析, 是可以用来从数据中 获得见解和可行措施的任何东西。 这听起来好像没什么特别。 我们来看看《哈佛商业评论》上的这篇文章。在这里插入图片描述
文章名称在这里。 数据科学具有罕见的特质, 人们对它的需求量很大。 这些特质是什么? 是指获取非结构化数据的能力, 这些数据可以是网页上的开放文本、 网络博客、照片、视频, 也可以是任何类型的内容, 以及在这些数据中发现顺序、 意义和价值的能力。 有什么需求呢? 为什么对这些特质的需求很大? 很简单,它们可以让你 了解人们的思想和行为, 同时提供竞争优势。 对数据科学需求量的增长并不奇怪。 麦肯锡全球研究所预测过 2018 年人们对数据科学的需求量。 这是预测结果: 他们表示, 2018 年会出现数据技能缺口。 具体来说,单单在美国, 深度分析人才的缺口 就会达到 14 到 19 万。 这是指负责实际工作的数据科学家, 也就是操作和使用数据的技术人员。 更重要的是, 他们预计会短缺 150 万名精通数据、 并能在商业环境中使用数据的管理者。 这些人可以根据实际情况使用数据, 并实现一些目标。 其中存在巨大的需求。 最后,我们来谈谈数据科学领域的薪资。 这张图总结了《美国新闻与世界报道》中, 有关美国最高薪资岗位的数据。 根据奥莱利报告中的数据, 我将数据科学家加了进去。 你可以从这张图中看到, 排第一的是医生,然后是牙医。 数据科学家排第三,比律师高 3 个名次。 里面的中等薪资是 144,000 美元, 基本薪资大约是 104,000 美元, 都属于高收入领域。 从这个需求简介中,可以得出什么结论? 第一,对数据科学的需求量非常大。 第二,既需要从事数据科学的技术专家, 也需要多面手, 也就是侧重将其应用到具体情境的管理专家, 以及将结果付诸实践的其他人员。 当然,薪水也很高。 这 3 个事实让数据科学极具吸引力, 也是我们打算深入了解的原因。

文氏图

在这里插入图片描述
要试图定义数据科学领域, 最好的着手点之一, 就是使用数据科学文氏图。 这是德鲁·康威在 2013 年首创的, 由三个代表不同领域的独立圆圈, 一起构成了数据科学。 左上角的第一个是黑客技术, 也就是计算机编程和编码, 代表检索和操作数据的能力。 右边是数学统计学, 是实际理解这些数据的能力。 底部的第三个关键部分是专业领域知识, 也就是对任何特定领域工作的熟练掌握。 下面,我们简单了解一下这些领域。 在这里插入图片描述
黑客技术也就是计算机编程, 用于收集和准备数据。 这些数据通常都采用了不常见的格式, 无法以电子表格或数据库的行列形式显示。 所以,黑客技术需要大量的创造力。 之所以叫黑客, 就是因为这种努力是创造性的。 数据科学的特殊之处在于, 每个项目都会带来新挑战。在这里插入图片描述
接下来是数学,或数学统计学。 重点不是要成为 世界领先的数学家和统计学家, 而是要知道如何选择有用的方法, 来解答手头的难题,并知道如何诊断问题。 同样,数据科学要完成的一项任务是, 在必要时需要开发和改进方法, 以应对新的数据挑战。在这里插入图片描述
最后是专业领域知识, 了解自己所在的领域和价值构成至关重要。 这个特定领域中的目标是什么? 常用工具是什么?你需要了解目标。 还需要了解方法,尤其是特定领域的限制。 有些事情可以做,有些则不能, 这有助于你以最有用的方式, 轻松构建分析框架。 这个文氏图中有 3 个圆圈, 共同构成了数据科学, 但正因为这是一个文氏图, 有另外 3 个区域同时涉及到 2 个圆圈。 第一个区域叫机器学习。 第二个叫传统研究, 而德鲁·康威把第三个区域叫做危险区域, 稍后我会说明。 我们来逐一了解一下。在这里插入图片描述
首先是机器学习。 在这里,你可以建立黑箱预测模型。 你只需要知道,这些都是进入模型的变量。 这就是我们想要预测的, 我们用一个模型将它们融为一体。 在这里插入图片描述
接下来是传统研究。 这之所以可行, 是因为在大多数传统领域, 数据集和分析都是结构化的, 相互之间具有某种连续性。 在这里插入图片描述
最后是危险区域。 这不太可能发生, 因为计算机编程能力出众、 专业领域知识丰富的人可能会在这一过程中, 已经掌握了一些数学统计学知识。 那结论是什么? 首先,数据科学结合了黑客、 数学统计学和专业领域知识这三个领域。 其次,涉及诸多技术。 要想做好数据科学,你需要具备多种能力, 并达到一定的程度。 另外,数据科学中还有许多不同的角色。 他们掌握不同的技术、具备不同的背景、 关注不同的重点, 这也是我们接下来要讨论的。

管道

开展数据科学项目时, 必须按顺序执行一整套必要任务。 我把它叫作“数据科学管道”。在这里插入图片描述
基本上,有四个部分的任务。 第一,进行规划。 第二,准备数据。 第三,为数据建模或进行统计分析。 第四,执行跟进工作。 我们简要了解一下每个部分。 第一部分是规划,涉及四个基本任务。 首先是简单定义目标: 你想实现什么目标? 这样,就可以集中精力, 并知道什么时候达成目标。 其次是整理资源。 比如,有哪些数据、 哪些机器可供使用? 更重要的是,有哪些人员? 他们有多少时间可用? 第三,组建完数据科学团队后, 你需要协调队员之间的工作。 这是一项社交任务, 但对项目的成功至关重要。 最后,在规划时, 要考虑项目日程安排是否合理。 数据科学项目通常需要协作完成, 并服务于某个客户,这一点很重要, 所以需要考虑周全。 第二部分是数据准备。 首先需要获取数据。 数据的来源有很多。 这可能需要很强的创造力。 接下来是清理数据, 也就是让数据适合你所使用的程序, 然后检查是否存在错误和异常, 并确保正在进行的工作有效可靠。 第七步是研究数据。 看看分布情况; 看看关联情况。 第八步是完善数据。 选择你想包含的案例。 选择你要使用的变量。 可以根据需要,创建新功能。 这将也提供在数据科学管道的 下一部分中,你要实际使用的内容。 第三部分是针对数据 进行实际建模或分析。 第九步是创建模型,可以多做几个。 创建完模型后,需要进行验证。 也就是说,你需要确保模型准确, 可以推广使用。 第十一步是评估模型。 试着确定模型的准确度, 看看它能够在多大程度上 帮你解答难题。 第十二步是完善模型。 根据评估结果, 你可能需要做一些调整, 让模型更容易实施, 并提供尽可能多的信息。 第四部分是跟进, 这类工作不涉及技术领域, 而是需要展示模型。 你通常是为客户服务, 需要以他们能够理解的方式, 展示你的分析结果, 并让他们知道该怎么做。 接着是部署模型。 比如,你正在为一个电子商务网站 开发预测模型, 必须将它放在服务器上, 才能获取新客户数据,并进行预测。 然后,你需要经常回顾模型, 因为扩展是个棘手的问题。 模型是根据一个数据集开发的, 现在却要在另一个数据集中实施, 你常常需要进行更改, 看看它是否合适。 最后,尽管看起来很麻烦, 但务必将使用过的所有材料归档, 包括每个步骤中的数据集, 从原始数据到清理过的数据, 再到最终分析结果, 以及使用过的代码、展示资料和注释。 这样,你和客户都可以随时了解 你之前的工作,如果有人需要 重新验证分析结果,也很方便。 简单了解数据科学管道后, 我们可以得出哪些结论? 首先,它不只是一门技术。 中间的第二和第三部分属于技术任务, 但其它部分涉及更多领域。 可以把它们叫做概念技能, 它们对项目的成功至关重要。 最后,数据科学可以促进多样性。 你需要这么多元素、这么多不同视角, 才能让项目顺利进行, 所以,拥有具备相关背景的员工, 并能够以这些方式查看数据, 这一点至关重要。

角色

数据科学中角色众多, 每个都能为整个过程 带来不同的关键技能和见解。 我们先谈谈工程师和开发人员。 他们专注于硬件和软件, 为数据科学提供支持, 是让数据科学成为可能的后盾。 比如数据工程师、开发人员和数据库管理员。 接下来是大数据专家。 他们具有丰富的计算机科学和数学背景, 参与大量的机器学习工作。 然后是研究人员。 他们专注于特定领域的研究, 往往在数据科学的统计方面 具备更多的专业知识, 较少涉及后端、硬件或计算机科学部分。 接下来是分析师。 他们专注于日常数据任务, 包括网站分析、使用 SQL 数据库 或进行数据可视化等等。 然后是业务代表。 他们负责管理数据科学项目, 最重要的是,可能负责构建 项目需要解答的业务相关问题, 并帮着理解、解释和实施解决方案。 他们的主要关注点虽然在业务或管理上, 但还是离不开数据。 想要出色完成工作, 他们需要了解数据的使用方式、 能够提供的信息,以及数据的优势和局限性。 还有创业者, 通常是参与基于数据的初创项目的创业者。 他们在数据科学项目的规划和执行, 以及项目的业务相关性方面, 都需要富有创造力。 最后是全栈数据科学家, 至少在理想状态下, 这个角色能够完美执行 数据科学的每一个要素。 这种人才非常稀缺, 也被叫作“独角兽”:一种具有魔法能力、 但实际上并不存在的神秘生物。 但如果能找到全栈数据科学家, 就能取得巨大进展, 以非常有效的方式解答重要问题。 所以,能得出什么结论? 首先,数据科学涉及多种角色。 有很多人参与其中, 他们都需要做不同的工作, 帮助项目取得成功。 其次,每个角色的目标或重点都不同, 需要具备的技能也不同。 数据库管理员所做的工作, 与数据初创项目中创业者所做的工作不同, 与大型数据库企业的管理者 所做的工作也不同。 最后,每个人的工作环境不同, 这表示他们各自的工作又有不同的目标、 动机、方法、限制和意义。

团队

在这里插入图片描述

数据获取

选择指标

在准备实施数据科学项目时, 最重要的事之一, 就是选择指标或衡量成功的标准。 因为数据科学以目标为导向。 你需要知道目标是什么, 才能清楚何时实现目标, 或者是否有可行方案。 具体来说,数据科学以行动为导向, 目标是完成某些事。 它不同于以知识为导向、 以理解为目标的项目,例如学术研究。 这是我作为过来人的经验。 另外,数据科学的目标必须明确, 才能为你指明努力方向, 让你知道目标是什么、 是否正在向实现目标前进, 以及是否需要做出改正。 设定明确的目标对客户有好处。 他们可以知道你会实现什么成果,以免失望。 最后,这对于作为分析师的你也有好处, 因为你可以有效利用时间。 我想说的是,你需要以目标为导向, 但同时也要能应对意外情况。 会有各种可能性发生,但重要的是, 首先知道自己想实现什么。 下面我们谈谈具体指标或衡量方法。 我会介绍几种可能的方法。 业务指标。关键绩效指标,简称 KPI; SMART 目标; 以及分类准确率。我们来逐一看看。在这里插入图片描述
首先是关键绩效指标。 这是戴维·帕门特提出的。 这类指标通常不得与财务有关, 不能仅仅衡量成本或收入。 它们是最终结果,而不是目标。 它们具有时效性,需要让你每周、 每天或随时都能获得相关信息。 它们是 CEO 的关注焦点, 因为 CEO 要根据 KPI 行事。 它们必须简单, 确保企业上下所有人都能明白。 它们以团队为基础, 大家共同承担达到指标的责任。 它们具有重大影响。 也就是说,这类指标应该影响多个重要结果, 比如提高盈利能力和市场覆盖率, 或缩短制造时间和减少缺陷。 在这里插入图片描述
其次是 SMART 目标,这是指具体性; 可衡量性;可分配性, 也就是需要知道由谁负责; 实际性, 也就是必须能够在现有资源条件下实现; 以及时限性。 你需要说明实现目标的截止时间。 要有具体的时间限制, 这其实是开展数据科学项目的重要组成部分。在这里插入图片描述
从研究角度来讲,你可以使用分类表, 了解针对某个事件的测试结果 是肯定还是否定,以及事件是否真实存在。 你会得到正确肯定、错误肯定以及其它组合。 现在你可以利用这些信息, 计算一些评估分类时常用的汇总统计数据。 比如敏感性,是指如果事件真实存在, 你实际取得一定成果的可能性有多大。 或者特殊性,是指尽量避免错误否定。 还有肯定预测值和否定预测值。 总结起来有 3 点。 首先,衡量可以促进认知。 在衡量结果时,你需要采取实际行动。 其次,认知有助于提高产品、 服务或其他交付内容的质量。 最后,衡量应该做到谨慎周密

现有数据

在这里插入图片描述
在选择数据源时,从现有数据集入手最简单。 从概念上讲,最简单的方法是使用内部数据, 以及开放数据和第三方数据等现有数据。 我会简要介绍每种数据的优缺点。在这里插入图片描述
内部数据已存在,所以使用起来快速简便。 数据格式可能很合适,幸运的话, 记录可能也很妥善。 另一方面,内部数据可能不像供其他人 使用的数据那样,受到相应的质量控制。 另外,即使在一家企业中, 也可能有针对数据使用的限制或政策。在这里插入图片描述
我们来看看内部数据的一些优缺点。 第一个优点是使用起来可能非常快捷, 而且通常是免费的,因为你就在企业内部。 如果运气好, 会有企业已经设定好的标准化格式, 以及关于使用的规则或政策。 如果运气特别好,或许还能联系到原来收集 和处理这些数据的团队。 这样,当你想提问和寻求见解时, 就能轻松获得帮助。 可能还有标识符,也就是说你也许可以知道 每个受访者的身份,或当时的情况。 但也有一些缺点。 首先,你需要的数据可能根本不存在。 可能是因为企业从没收集过这些数据。 另外,记录可能不完善。 通常,企业会将自己的数据收集在一起, 用于所需用途,然后不加整理地存储起来。 而且,数据质量可能具有不确定性。 你可能不知道编码中是否有响应偏差或错误, 这会导致使用数据的可靠性有所降低。在这里插入图片描述
开放数据可取代内部数据。 这是免费提供的现成数据。 通常是政府数据,但也有一些开放企业数据。 开放的科学数据也越来越多。 优点是你可以获得大量数据集。 规模可以达到 TB 甚至 PB 级, 价值高达数百万美元。 你可以获得范围广泛的主题。 内容可以涵盖各种历史时期和趋势。 另外, 开放数据通常具有适当的格式和完善的记录。 开放数据的缺点是可能存在偏差样本, 因为样本可能局限于某个特定的地理区域, 或是可以访问互联网的人, 而这些会产生解释问题。 另外,变量的含义可能不明确。 你没有机会与收集这些数据的人员交谈, 因此有时很难了解他们定义 某个特定变量的原因或方式。 在某些情况下, 开放数据还可能要求你共享分析结果。 毕竟,开放数据的用途就是开放分析。 这可能是个问题,在使用开放数据之前, 你需要仔细研究一下。 最后,开放性可能与数据的隐私性 和机密性需求产生冲突。 最后还有第三方数据, 也就是所谓的数据即服务, 简称 DaaS。 这些数据提供者也叫做数据代理, 可以为你提供关于各种主题的大量数据。 很多数据代理还会处理这些数据, 做出某些推论,这可以为你节省很多时间。 因此,第三方数据的优点是, 可以为你节省大量时间和精力。 而且通常可以提供个人层面的数据。 另外,你可以获得总结和推论。 另一方面, 第三方数据的成本可能非常高昂。 而且可能仍然需要验证。 你还要再三确认含义是否与你想的一样。 还有一个缺点,可能也是最严重的一点, 就是第三方数据往往会让很多人产生反感。 我们总结一下:解释数据时要谨慎, 因为总有可能出现潜在偏见,或是数据含义 可能与你设想的不同, 因为你没有参与数据收集。 但是,使用现有数据集 可以让你获得大量信息, 而且可以在数据科学项目中节省大量时间。

API

使用 API 是为数据科学项目 收集数据的最佳方法之一。
API 是指应用程序编程接口, 用于实现计算机程序的相互通信。 很多 API 直接在操作系统中运行, 但它也是访问网络数据、 以及从多个源实时提取数据的一种方法。 在这里插入图片描述
在数据科学领域, 最常用的 API 叫作 REST API, 其中 REST 表示表述性状态转移, 是万维网软件架构样式。在这里插入图片描述
我们使用 REST API 通过 HTTP 访问 网页上的数据,获取的数据通常是 JSON, 也就是 JavaScript 对象表示法格式。 这种格式的好处是, 我们可以使 REST API, 直接将数据从这个网页 发送到其它程序中进行分析。 另外,REST API 与语言无关。在这里插入图片描述
社交 API 是最常见的一类 API。 例如,Facebook 就有这类信息。 推特有一种很常用的 API, 可用于从推特获取数据。 谷歌环聊也很热门。 这两个在社交 API 中也很流行。 你可以构建与这些社交网络 直接连接的应用程序,在某些情况下, 可以提取数据用于数据科学项目。 可视化 API 也很常见。 比如谷歌地图、YouTube 或这个天气查询网站都很常用, 这两个也很流行。 举个很简单的例子: 一个通过 R 脚本实现的 API。 我们从 Ergast 网站获取一些赛车数据。 这是 Ergast 网站上显示的内容。在这里插入图片描述
看起来不多, 但是点击这个链接就会转到这里。 在这里插入图片描述
这是一个开发人员 API,可以提供 从 1950 年到 2014 年的 一级方程式赛车相关信息。 在这里插入图片描述
你要做的就是创建一个 URL。 我们专门搜索一下 1957 年的冠军得主。 这就是查找相关结果的地址。在这里插入图片描述
在这里插入图片描述
这是 JSON 格式的结果数据, 1957 年每场比赛的冠军。 现在我们知道了 URL 是什么, 就可以转到 R 脚本了。在这里插入图片描述
我们使用 jsonlite 程序包, 它可以从 Web 访问 JSON 数据; 还有它的依赖项 curl,用于 URL。 如果你还没有安装这些程序包, 则需要使用安装包, 在这里使用 require 加载 jsonlite。 它会默认加载 curl。 我把这个放大一点。 然后,我们使用之前的这个 URL, 用命令 fromJSON 将它输入到 代表一级方程式赛车的 F1 对象中。 里面是一个列表对象。 它非常大,包含很多文本。 但它的结构和我们之前看到的一样。 我们放大窗口来看一下这里的结构。在这里插入图片描述
这种方式可以显示嵌套结构, 但从这个视图很难看明白。 我们要做的是获取这个列表中的一项, 从总体对象 F1 向下一级到 MR 数据, 再到下一级比赛表,依此类推,直到赛车手, 我们将数据输入这个对象中。 然后获取这个对象的列名称。 共有 7 列,我们提取其中 4 列, 并将其换一种顺序排列, 这就是这个数据集中的前五位赛车手。 在这里插入图片描述
我们可以看到名字、姓氏, 胡安·方吉奥是首场比赛的冠军, 他来自阿根廷, 是有史以来最伟大的赛车手之一。 这就是从网页访问这些结构化 JSON 数据、 并将它们输入到 R 脚本中的一种很好的方法, 这样我们就能在自己的分析中使用这些数据。 通过这次讨论和演示,我们得到了哪些结论? 首先,使用 API 可以轻松获取结构化网络数据。 其次,你可以获取这些数据, 并将它们直接放入用于分析程序中。 第三,对于可以纳入分析中以获得 所需见解的结构化数据来说, API 是数据科学的最佳检索工具之一。

抓取

在数据科学领域, 获取数据的另一种好方法是抓取数据。 这种方法很重要, 因为并非所有数据都是友好的 JSON 格式。 并非所有数据都是专门用来访问的, 所以有时你不得不寻求访问数据的新方法。 例如,我可以在维基百科网页或表格、 PDF 文档或是图片、 视频和音频等媒体中加入 HTML 文本。 另外还有 Word 文档、 PowerPoint 演示文稿, 以及很多其他来源,都没有适合导入用来 分析数据的 Python 或 R 等工具的数据包。 在讲其他内容之前,我要先说一下: 注意版权和保密问题。 人们创建这些数据不是为了让你抓取的, 有时出于一些原因,数据访问会受限制。 你需要知道这些限制是什么, 并遵守这些限制,以专业方式操作。 在这里插入图片描述
如果要抓取数据,可以采取几种方法。 一种是使用现成的工具, 例如 import.io。 这既是网址也是工具名称,利用这个工具, 你可以很轻松地从网页中抓取数据。 ScraperWiki 和 Tabula 也有同样的作用。 在 Google Sheets 中, 只需使用 =IMPORTHTML_ 命令 就能提取表格中的数据。 甚至某些版本的 Excel 也可以。 也可以使用自定义工具。你可以通过 R、 Python 或命令行 Bash 抓取数据, 也可以通过 Java 或 PHP 抓取。 这些方法都能让你访问数据, 以需要的方式操作这些数据, 从而将它们转换为可分析的格式。 在这里插入图片描述
我们来总结一下:首先,如果需要使用的数据 没有对应的 API,可以采用抓取方法。 另外,可以使用 专门用来抓取数据的应用程序, 也可以使用你选择的语言进行编码。 最后,版权和保密问题很重要, 在开始从网络上抓取数据之前, 一定要慎重考虑这两个问题。

数据探索

获得数据后, 需要做的第一件事就是探索数据。最好的方法是使用探索式图形。

探索性图形

在这里插入图片描述
在这里插入图片描述
具体来说,你可以了解数据检查已计划分析的假设检查异常情况, 还可以看看数据 是否显示了意想不到的新信息。 通过所有这些信息, 你可以了解计划的分析是否恰当, 以及你是否能够合理地得出自己想要的结论。 那么,为什么要从图形入手呢? 因为图形很直观,提供的信息很丰富。 它们能以人类擅长的方式和快得多的速度, 传达大量信息。 因为人类是视觉动物。 图形也是检查分布状况、 差异和离群值的最快方法。 这些都会对你的分析产生重大影响。 关于探索,你需要做几件事。在这里插入图片描述
首先查看一元分布,也叫单变量分布, 就是一次一个变量。 然后再看联合分布,也就是变量之间的关联。 你需要查找异常情况, 也就是异常值,还有数据中的错误。 另一个重要因素是缺失值, 也就是缺少某个值的情况。 有时它没有任何意义。 这叫做完全随机缺失,基本可以忽略。 还有一种叫做随机缺失, 可以通过观察变量来解释缺失。 另外还有非随机缺失,也叫不可忽略缺失。 这是个问题,因为它会导致数据出现偏差。在这里插入图片描述
关于探索,你可以采取几种方法。 一是尝试编码。 R 是处理探索式图形的常用工具。 Python 也是。 还有 JavaScript, 尤其是 D3 程序库, 是一种很好的图形处理方法, 让你可以探索数据。 有些软件是专门用来探索数据的。 Tableau 和 Qlik 都是最好的软件。 如果你习惯在 Excel 中 快速制作图表, Excel 也非常适合用来探索数据, 因为它们可以动态更新。 约翰·图基在发明探索性资料分析时, 完全手工完成。 现在,这仍然可以 作为个人了解数据的一种方法。 在这里插入图片描述
条形图是很好的起点。 它们适用于分类和分类变量。 它们容易解读,尤其是在按值降序排列时。 最常见的组是最左边靠近纵轴这个, 向右依次降低。 另外,你可以对它们进行分组, 寻找变量之间的关联。 换句话说就是寻找各组间的差异。 在这里插入图片描述
箱形图又叫盒须图, 也适用于定量变量,也就是测量变量。 这种图可以显示四分位值, 也就是中位数、第一四分位数、 最小值、最大值和离群值。 这是它们的主要用途之一。 另外,你可以对它们进行分组, 甚至可以一次显示多个变量, 只要它们的规模相同或非常相似就可以。在这里插入图片描述
下面是直方图,与箱形图一样, 也适用于定量变量。 这种图可以显示分布状况。 它们的优点在于, 你也可以像我这样叠加图形, 将形状与其他可能的形式进行比较。在这里插入图片描述
接下来,查看关联的最佳方法之一 是使用散点图。 在这个例子里是散点图矩阵。 这种图可以显示多个定量变量之间的关联。 这张图还包含了所含 3 个变量的直方图。 我认为,散点图矩阵 解读起来比 3D 散点图容易得多。

在浏览这些图表时,你要回答以下问题: 你是否具备解答问题所需的条件? 是否存在数据块或数据差异? 是否存在异常情况?数据中有错误吗? 探索式图形会帮助你 找到这些问题的正确答案, 为更深入的分析做好准备。 在这里插入图片描述
我们来总结一下。 首先,在良好的数据分析中, 探索始终是重要的第一步。 另外,你需要使用快速简单的方法。 使用适合的工具, 你习惯使用的工具,这样才能快速完成探索。 最后,图形探索是数值探索的前导, 我们接下来就讨论数值探索。

探索性统计数据

完成探索式图形后, 下一步是对数据进行探索性统计, 也叫数值探索。 重申一下,一般原则是先图形再数字。在这里插入图片描述
进行探索性统计时一定要记住, 你还在探索,不是要为数据建模。 另外,你需要使用经验估计 或基于样本数据的总体估计, 而不是理论或分析估计。 你还可以检查操纵数据的效果, 以及查看数据对变异的反应。在这里插入图片描述
探索性统计有 3 种常用方法。 它们是稳健统计、 数据重采样或统计信息重采样, 以及转换数据或数据转换。 我们来逐一了解一下。在这里插入图片描述
首先是稳健统计。 它们就好比一座山,因为不容易移动。 它们很稳固。 稳健统计在异常情况下非常稳定。 离群值、偏度、峰度等对它们的影响较小。 你可以选择很多内容,比如截尾均值、 中位数、极端值调整平均数、 四分差、绝对中位差。 但是,它们有时做起来并不容易。 大多数统计程序不会自动设置好这些统计。 但你可以使用一些包, 比如 R 或 Python,这样更容易。 这是一个偏斜数据的例子。 这个例子中有一个数据集, 其中大部分值都很低,离群值很高。 我们要做的是去掉截尾均值 和极端值调整平均数。 截尾均值是指 去掉条形图顶部一定比例的数据。 极端值调整平均数是指 把它替换成最接近的非异常值。 你可以看到,如果我们去掉百分之零, 不做任何调整,总体均值是 1.24, 如果去掉百分之五,总体均值开始下降。 截尾均值下降得稍微多些。 每一端去掉 10%,然后是 25%, 最终去掉 50% 时, 得到的值和中位数一样。 这是中间值,在这个例子中是 1.01。 你可以判断一下哪一种对你的分析最有帮助。 你也可以选择完全忽略它们,但要慎重选择。
在这里插入图片描述
在这里插入图片描述

接下来是重采样,也叫“自助采样”, 是对抽样变异性的经验估计。 这不是试图获取总体标准差, 而是从数据中抽样得到多个标准偏差, 然后用这些标准偏差来估计变异性。 常见的例子包括刀切法, 也就是使用随机的数据子集或不放回抽样; 自助法,也就是使用放回抽样; 排列:在不同的组间重新排列案例; 另外,交叉验证的机器学习过程 与重采样有关, 至少在概念上是这样, 它是检查结果一致性的一种方法。 接下来是转换数据。 这种方法是寻找本身没有较大跳跃、 能保持数据顺序的光滑函数, 这样你可以使用完整的数据集。 在这里插入图片描述
很多时候,人们使用数据转换 来修复偏斜数据或散点图中的曲线。 其中一种常用方法叫作“图基”, 也就是约翰·图基幂阶梯。 例如,你可以看到向下第三个是 X。 这是原始值, 可以通过乘二次方或乘三次方升高, 也可以通过求取平方根或对数等降低。 代入数据后,就是这样。 右边第三个是原始数据集。 它通常是对称的。 可以看到它乘二次方后会下降, 顶端是一些离群值, 还可以看到它乘三次方后上升的过程。 而在最远端,如果取平方根的倒数, 会得到截然不同的效果。 不要为了创建离群值而这样做, 但如果有离群值, 可以用这些值把它推回到更对称、 更正态的形状, 以使用完整的数据集进行分析。在这里插入图片描述
我们来总结一下探索性统计。 首先,最好从多个角度来看数据。 另外,最好在不同的情况下检查稳定性。 最后,探索性统计可以为建模奠定基础。

编程与数据科学

电子表格

关于编程和数据科学, 我首先想说说电子表格在数据科学中的作用。 电子表格看上去 并不是多么花哨或复杂的工具, 但你在处理工作时经常会用到它。 原因如下。首先,电子表格无处不在。 几乎每台电脑上都有微软 Excel, 也可以访问在线电子表格, 电子表格通常也是客户的首选格式。 客户提供的数据通常都是电子表格形式, 因此,要分析这些数据, 你必须能够熟练使用电子表格。 在数据传输中,电子表格的 CSV, 也叫逗号分隔值格式, 就像数据程序之间的通用语。 任何程序都可以读取和写入 CSV 文件。 它支持你在程序之间传输数据, 而且易于使用;相比其他程序, 有些操作在电子表格中更容易实现, 我会展示一些相关示例。 不过,我想先展示对数据挖掘专业人员软件 使用情况的调查结果。在这里插入图片描述
这是 KDnuggets 做的调查, Excel 在其中排名第五! 超过了典型的大数据工具 Hadoop 和 Spark。 下面是 Excel 在排名上 如此突出的原因。在这里插入图片描述
首先,它有很多重要的用途。 它很适合进行所谓的数据浏览, 你可以直观地看到眼前的数据, 并方便地上下左右滚动,查看相应内容; 数据排序和手动重新排列行和列都很方便。 使用方式注重实际操作, 也便于进行查找和替换。 这些对数据科学来说至关重要。 简化操作这一事实使电子表格变得重要。 在这里插入图片描述
现在,电子表格有了更多用途。 包括格式化数据; 转置数据、切换行和列也很简单; 跟踪更改,与人协作时, 你可以看到他人的操作; 制作数据透视表,图上就是一个数据透视表。 对有些人来说,电子表格存在的意义, 就是让数据透视表成为一种 交互探索和处理数据的方式。 此外,它也非常适合 安排输出以进行演示和分析。但有一点需要注意, 电子表格有很大的灵活性, 这可能会成为一个问题, 因为当你与程序共享数据时, 并不一定需要太多变化。 相反,你需要“整洁数据”。在这里插入图片描述 整洁数据用于在程序之间传输数据, 其中一列等于一个变量,一行等于一个常量, 每个文件有一个工作表, 每个文件有一个分析级别。 如果你曾经使用过关系数据库, 就会熟悉这个设置, 它使得数据在程序之间的传输变得非常容易。 电子表格介绍完了,能得出什么结论呢? 首先,电子表格仍然很重要, 数据科学家仍然需要它。 作为惯例, 客户可能会以这种格式向你提供数据, 并希望你按原格式返回数据。 另一方面,它也是许多程序的首选工具, 例如数据浏览和数据透视表。 但要记住,你需要整洁数据, 用于在程序间轻松传输。

R

在这里插入图片描述
说完电子表格, 我想介绍的首个数据科学工具是 R。 它是一种统计编程语言,名字就叫 R。 可以说,R 是数据科学的语言。 再来看下之前看过的调查。 这项调查面向数据挖掘专业人员, R 是最常用的工具, 使用率几乎是其他工具的两倍, 比拥有专门的统计包的主要竞争对手 Python 高 50%。 这是有原因的。第一,R 是免费、开源的。 这是一项优势, 因为一些专有程序可能极其昂贵。 第二,R 针对向量运算进行了优化。 因此 R 能够处理整个数据收集过程, 无需编写显式的 for 循环, 可以节省大量时间。 第三,R 背后有个强大的社区。 它能提供大量支持, 无论你想使用 R 做什么, 几乎都能在社区中获得帮助。 最后也是最重要的一点, R 目前有七千多个免费包, 极大地扩展了它的实用性。在这里插入图片描述我们来快速看一些 R 界面, 看看如何使用 R。 R 有自己的交互式开发环境。 它是一个命令行界面, 但在不同的操作系统上会所有不同, 而且它有多个单独的浮动窗口,这有点麻烦。 你也可以通过终端或命令行运行 R。 在 Mac 上,只需打开终端并键入 R。 但最常见的是你现在看到的 RStudio。 它是一个叠加在 R 上的窗口, 你必须单独安装 R。 但它对 R 进行了整理,让 R 更便于使用。 它还可以在所有操作系统上保持一致。 现在又有了另一个选择,叫 Jupyter, 通过 Python 和 IPython 为人们熟知。 Jupyter 非常适合处理代码和进行分享。 不过,根据我的经验, 它还没有迎来 R 的黄金时期, 但我相信这很快就会有所改善。 再次提醒大家, 以上所有界面都是命令行界面, 左上角显示了键入的代码行。 人们有时会把 RStudio 叫做图形用户界面。 这只是为了运行命令和复制粘贴。 如果要进行分析,还是需要键入代码行。 我们来快速浏览一下 在代码行中获得的一些命令。在这里插入图片描述
首先,可以在控制台中输入命令。 也可以从脚本中保存并有选择地运行它们, 图上就是一个脚本。 R 与其他语言不太一样。 比如,从图中可以看到, 命令的末尾没有分号。 另外,和 Python 一样, 这里的空白也没有意义, 只是处理任务的方式不同而已。 在使用 R 一段时间后, 就会发现它是一种非常有效的数据处理方式。 在这里插入图片描述来看看 R 的输出。图表显示在单独窗口中, 文本数字显示在控制台中。 这意味着它们会消失, 不会持久保留,除非你专门保存。 不过,你可以把这些结果写入文件, 以保留更长时间。 R 最重要的特性是有包。在这里插入图片描述
如,有个简称 CRAN 的 R 综合归档网, 在以下网址。 所有包都在这里。 你可以在 CRAN 中按主题 或按根据主题组织的任务视图进行搜索。 这里显示的是用于学习 贝叶斯的统计包的一小段, 它其实很长,这只是第一部分。 理想情况下,你下载的包都附带样本数据集、 用户手册和插图,或者工作原理演示。 在这里插入图片描述
另一个选择是 Crantastic 站点, 位于这个网址:crantastic.org。 它是一个链接回 CRAN 的替代界面, 但它显示了热度和时效性, 非常适合探索哪些包适用于你的工作。 介绍 R 之后,我们能得出什么结论呢? 首先,R 是数据科学的核心。 其次,它是一个命令行界面, 你需要键入代码行。 它功能强大,拥有成千上万个免费包, 大大扩展了它的功能和实用性。

Python

在这里插入图片描述当有人问从事数据科学 需要学习什么工具时,我通常会回答: 统计编程语言 R 和通用编程语言 Python。 Python 是数据科学不可或缺的核心工具。 来看看 KDNuggets 软件调查中 Python 的排名。 重申一下, 这是对数据挖掘专业人员最常用工具的调查。 Python 在这个列表中排名第四, 是里面唯一的通用编程语言。 它的使用率还在迅速增长。 Python 存在已久, 但近来才被用于处理数据。 它扩展得非常快,这有几个原因。在这里插入图片描述
首先,Python 是通用的, 这意味着大家可以使用它执行任何操作, 例如创建应用程序、 访问数据源以及实施一系列控制。 Python 内置在 Mac 或 Linux 电脑中, 并且可以轻松添加到 Windows 电脑。 与 R 类似,Python 也有一个强大的社区。 它有数千个包,确切地说是上万个, 但其中只有一部分特别适用于数据科学。在这里插入图片描述
在使用 Python 时,你需要确定版本, 因为现在广泛使用的 有第二版和第三版两个版本。 问题在于,Python 的第三版 并非完全后向兼容。 为第三版编写的代码不一定 能在第二版上运行,反之亦然。 数据科学中使用的许多包仍依赖于第二版。 相信这在以后会有所改观。 但在目前,这意味着尽管第三版正在更新, 许多数据科学从业者使用的还是旧版, 也就是第二版。 我们来看看它的界面。在这里插入图片描述
使用 Python 时, 你可以选择它自有的网络开发环境 IDLE。 你可以在命令行的终端 或你选择的任何 IDE 中运行, 也可以通过左侧所示的 Jupyter 界面运行。 Jupyter 最初叫 IPython, 是 50 多种不同语言的综合项目的名称。 Jupyter 是我目前首选的 Python 界面, 尤其适用于演示和分享。 现在要使用 Jupyter 的话, 安装会有些麻烦, 除非你有预安装的捆绑包。 有两个捆绑包非常不错, 一个是 Continuum 公司发布的 Anaconda 版本,下载量巨大。 它包含 Jupyter 和上百个重要包, 以及数据科学所需的所有依赖项, 是免费的。还有一个是 Enthought 发布的 Canopy 版本。 他们有一个免费版本,但也有商业版本。 这两个版本都支持轻松使用 Python 和 Jupyter。 重申一遍,与 R 一样, 你要记住它始终是命令行。 无论使用什么界面,你都要键入代码行。 我们来看看其中一些代码行。在这里插入图片描述
命令是一个文本界面,图中所示的命令 是用来在另一个页面上生成数字的。 Python 的优势在于 数以百万计的程序员都熟悉它。 人们都知道如何使用 Python, 它是一种整洁简单且易于使用的语言。 而且它针对数据处理, 进行了许多简单的调整。 我们来看看它的一些输出。 在这里插入图片描述
左侧的输出和我最喜欢的 Jupyter/IPython 的输出类似。 它是文本输出, 比如这里显示的一些灰色单元格。 还有嵌入图形,图上没有显示, 但你肯定在其他页面上见过。 使用 Jupyter, 组织和呈现所有输出内容非常容易。 这是它的一大优势。我们的结论如下: 首先,Python 是一种广泛使用的语言, 大家都很熟悉它。 它是一种通用编程语言,这是它的优势, 意味着它能处理的不只有数据。 与 R 一样,Python 拥有强大的在线社区, 免费提供成千上万个包。

SQL

在这里插入图片描述
从事数据科学工作后, 你很快就会发现 SQL 的重要性。 现在看看 SQL 在 KDnuggets 软件调查中的排名。 这项面向数据挖掘专业人员的调查显示, 在他们工作中最常用的程序和语言中, SQL 位列第三。 它也是排名第一的数据库工具。 首先要记住 SQL 是语言, 它本身并不是程序, 而是处理程序的方法。 SQL 适用于多种关系数据库。 这种最常用的方法非常适合处理结构化数据。 比如处理行列和表格形式的数据。 通常的做法是使用 SQL, 直到从数据库中取得所需的数据, 然后加以整理并发到 R 或 Python 等 其他程序进行分析。 在这里插入图片描述
SQL 是关系数据库管理系统的语言。 这种系统是用于存储数据的 数据库的实际结构。 常见的有 Oracle 数据库、 Microsoft SQL Server、 MySQL 或 PostgreSQL。 这些都很受欢迎。 SQL 在各种系统中的工作方式可能 略有不同,但总的来说都很相似, 都是从数据库中查询或获取数据、 并加以处理的语言。在这里插入图片描述
数据库中的数据有一定的结构。 结构设计可以尽可能减少冗余, 以避免重复获取信息, 或将相同信息存储在同一位置。 这样,信息的更新将会应用到全局。 数据还会被整理成由行和列组成的表。 表之间相互连接, 这就是它被称为关系数据库的原因。 在这里插入图片描述
接着是界面。你可以使用文本界面, 这种界面有很多。 还有不少公司提供图形用户界面, 让你可以使用 SQL 语言和关系数据库。 例如 SQL Server Management Studio 和 SQL Developer。 Toad 也很常用。 事实上,所有命令行界面 或交互式开发环境, 都支持使用 SQL 语言编写代码 和访问关系数据库。在这里插入图片描述
我们来看几个基本的 SQL 命令。 SELECT 是最常用的命令之一。 它用于从数据库中提取数据。 FROM 命令用于指定从中提取数据的表。 WHERE 用于指定条件, 比如年满 27 岁和性别为女等。 ORDER BY 用于排序。 当然,SQL 还有很多其他命令, 但这些是最常见的。 你通常可以使用它们获取所需数据, 快速清理数据, 以及整理数据以便在其它语言中使用。 总结起来,第一, SQL 是用于从关系数据库获取数据的语言。 第二,有些命令非常有用。 第三,通常是从数据库中提取数据, 然后发送到 R 或 Python 等其它程序进行分析。

Web格式

在这里插入图片描述
获取用于数据科学项目的数据时, 数据可能在电子表格或关系数据库中, 也可能在网上。 因此,你需要了解一下 我所说的 Web 格式。 在检索数据和共享数据方面, 数据科学的发展有赖于互联网。 Web 格式有几种。 第一种是 HTML。 第二种是 XML。 第三种是 JSON。 第四种是 JavaScript, 这其实是一种编程语言。 我们来逐一了解下。
在这里插入图片描述
HTML 是指超文本标记语言, 它是网页语言,用来指明文本内容、 标题内容和链接放置位置。 网页上信息的样式通过 CSS, 也就是层叠样式表进行设置。 这是用来安排网页实际外观的工具。 要想从网页中抓取或提取数据, 你必须会用 HTML。 这可能是数据科学家 学习 HTML 最重要的目的。
在这里插入图片描述
就实际数据结构来讲, 一种很常见的格式是 XML, 也就是可扩展标记语言。 这是一种人机都可读的数据编码, 但也有例外情况。 它是一种半结构化格式。 你可以随意定义所用的标记, 而这些标记都是可搜索的, 用来告诉计算机数据的内容。 比如尖括号中有个 RaceTable。 它表示这个表包含的是比赛信息。 我还可以指定赛季、比赛场次和赛道等。
在这里插入图片描述
另一种很常见的数据格式是 JSON, 也就是 JavaScript 对象表示法。 它最初源自 JavaScript 语言, 但已经不仅限于这一种语言。 它可以用在许多不同语言中。 JSON 正逐渐取代 XML 作为数据格式的地位, 部分原因在于它更紧凑。 另外,你可以在两者之间轻松转换。 我用了刚才的 XML 示例, 轻松地直接转换成了 JSON。 花括号、冒号和引号 可以用来定义标记和数据。
在这里插入图片描述
接着是 JavaScript。 与 HTML 和 CSS 一样, 它也是主要网页语言之一。 它是一种独立编程语言, 你可以用它创建整个程序。 它还能用于动态交互组件, 特别是网页中的数据库图形。在这里插入图片描述
D3 语言,也就是数据驱动型文档, 可能是个典型例子。 D3.js 用于实现 可嵌入网页的交互式数据可视化。 具体来说, D3 是一个 JavaScript 库, 可以通过数据生成矢量图形, 从而实现可扩展性。 我认为,能够使用 D 或许是数据科学家 学习使用 JavaScript 最重要的原因。 我们来总结一下。 第一,网络数据对数据科学至关重要, 因为你需要从各种网络数据源获取大量数据。 第二,HTML、XML 和 JSON 是这些数据源使用的格式, D3.js 是一种 JavaScript 库, 可被用来实现 能在网上共享的动态数据可视化。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值