提交 3a9310b4 编写于 作者: W wizardforcel

2021-02-23 22:58:31

上级 c2039612
......@@ -32,7 +32,7 @@ Python 创建于 1991 年,是一种通用的,解释性的和面向对象的
* Python 可以轻松地集成不同的工具,并为不同的语言,数据策略和学习算法提供了真正的统一基础,可以轻松地将它们组合在一起,并且可以具体地帮助数据科学家构建强大的解决方案。 有些软件包允许您调用其他语言(Java,C,Fortran,R 或 Julia)的代码,将一些计算外包给它们并提高脚本性能。
* 它非常通用。 无论您的编程背景或风格是什么(面向对象,过程甚至功能),您都将喜欢使用 Python 进行编程。
* 它是跨平台的; 您的解决方案将在 Windows,Linux 和 macOS 系统上完美流畅地运行。 您不必太担心可移植性。
* 尽管可以解释,但是与其他主流数据分析语言(例如 R 和 MATLAB)相比,它无疑是快速的(尽管它不能与 C,Java 和新出现的 Julia 语言相提并论)。 此外,还有静态编译器,例如 *Cython* 或即时编译器,例如 *PyPy* ,它们可以将 Python 代码转换为 C 以获得更高的性能。
* 尽管可以解释,但是与其他主流数据分析语言(例如 R 和 MATLAB)相比,它无疑是快速的(尽管它不能与 C,Java 和新出现的 Julia 语言相提并论)。 此外,还有静态编译器,例如 *Cython* 或即时编译器,例如 *PyPy*,它们可以将 Python 代码转换为 C 以获得更高的性能。
* 由于其最小的内存占用和出色的内存管理,它可以处理大型内存数据。 内存垃圾回收器通常会在您使用各种迭代和重复的数据处理方式来加载,转换,切块,切片,保存或丢弃数据时节省一天的时间。
* 学习和使用非常简单。 掌握了基础知识之后,没有比立即开始编码更好的方法来学习更多。
* 此外,使用 Python 的数据科学家的数量也在不断增长:社区每天都在发布新的软件包和改进,使 Python 生态系统成为数据科学中越来越多产和丰富的语言。
......
......@@ -1201,7 +1201,7 @@ ARIMA 是最受欢迎的时间系列预测模型之一,顾名思义,它由
![Time series forecasting using the ARIMA model](img/00189.jpeg)
* `I`: Stands for **integrated**. For the ARIMA model to work, it is assumed that the time series is stationary or can be made stationary. A series is said to be stationary ([https://en.wikipedia.org/wiki/Stationary_process](https://en.wikipedia.org/wiki/Stationary_process)) if its mean and variance doesn't change over time.
* `I`: 代表**集成**。 为了使ARIMA模型正常工作,假设时间序列是固定的或可以使其固定。 [如果其均值和方差不随时间变化,据说一个系列是固定的](https://en.wikipedia.org/wiki/Stationary_process)
### 注意
......@@ -1209,7 +1209,7 @@ ARIMA 是最受欢迎的时间系列预测模型之一,顾名思义,它由
使用数学符号,严格平稳性可以转换为:
![Time series forecasting using the ARIMA model](img/00190.jpeg)和![Time series forecasting using the ARIMA model](img/00191.jpeg)对于任何`t`,`m`和 *k,*都是相同的,其中`F`是联合概率分布 。
![Time series forecasting using the ARIMA model](img/00190.jpeg)和![Time series forecasting using the ARIMA model](img/00191.jpeg)对于任何`t`,`m`和`k`都是相同的,其中`F`是联合概率分布 。
实际上,此条件太强了,最好使用前面提供的较弱的定义。
......@@ -1221,11 +1221,11 @@ ARIMA 是最受欢迎的时间系列预测模型之一,顾名思义,它由
例如:
*I(0)*被定义为不需要日志差异(该模型称为 ARMA)。
`I(0)`被定义为不需要对数差(该模型称为 ARMA)。
*I(1)*定义为需要 1 个日志差异
`I(1)`定义为需要 1 个对数差
*I(2)*定义为需要 2 个对数差。
`I(2)`定义为需要 2 个对数差。
### 注意
......@@ -1245,13 +1245,13 @@ ARIMA 是最受欢迎的时间系列预测模型之一,顾名思义,它由
例如:
*MA(0)*定义为不需要移动平均线(该模型称为 AR)。
`MA(0)`定义为不需要移动平均线(该模型称为 AR)。
*MA(1)*被定义为使用 1 的移动平均窗口。公式变为:
`MA(1)`被定义为使用 1 的移动平均窗口。公式变为:
![Time series forecasting using the ARIMA model](img/00196.jpeg)
根据先前的定义,我们使用符号 *ARIMA(p,d,q)*定义 ARIMA 模型,其阶数为`p`的自回归模型,阶为[`d`和大小为`q`的移动平均窗口。
根据先前的定义,我们使用符号`ARIMA(p, d, q)`定义 ARIMA 模型,其阶数为`p`的自回归模型,阶为[`d`和大小为`q`的移动平均窗口。
实现所有代码以建立 ARIMA 模型可能非常耗时。 幸运的是,`statsmodels`库在`statsmodels.tsa.arima_model`包中实现了`ARIMA`类,该类提供了使用`fit()`方法训练模型并使用`predict()`方法预测值所需的所有计算。 它还照顾日志差异以使时间序列固定。 诀窍在于找到用于构建最佳 ARIMA 模型的参数`p`,`d`和`q`。 为此,我们使用 ACF 和 PACF 图表,如下所示:
......@@ -1300,7 +1300,7 @@ display(logmsft_diff)
应用对数差异后的 MSFT 股票系列
通过查看前面的图,我们可以合理地认为我们已经成功地使时间序列固定为 0。 我们还可以使用更严格的方法通过使用 [Dickey-Fuller 测试](https://en.wikipedia.org/wiki/Dickey%E2%80%93Fuller_test)的测试平稳性 测试 *AR(1)*模型中存在单位根的原假设。
通过查看前面的图,我们可以合理地认为我们已经成功地使时间序列固定为 0。 我们还可以使用更严格的方法通过使用 [Dickey-Fuller 测试](https://en.wikipedia.org/wiki/Dickey%E2%80%93Fuller_test)的测试平稳性 测试`AR(1)`模型中存在单位根的原假设。
### 注意
......@@ -1324,7 +1324,7 @@ pp.pprint({labels[i]: ad_fuller_results[i] for i in range(4)})
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%208/sampleCode23.py)
我们使用了`pprint`软件包,该软件包对于*漂亮- 打印*任何 Python 数据结构。 有关`pprint`的更多信息,请参见[这个页面](https://docs.python.org/3/library/pprint.html)
我们使用了`pprint`软件包,该软件包用于*精美打印*任何 Python 数据结构。 有关`pprint`的更多信息,请参见[这个页面](https://docs.python.org/3/library/pprint.html)
结果(在[这个页面](http://www.statsmodels.org/devel/generated/statsmodels.tsa.stattools.adfuller.html)中进行了详细说明)显示在此处:
......@@ -1341,7 +1341,7 @@ pp.pprint({labels[i]: ad_fuller_results[i] for i in range(4)})
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%208/sampleCode24.json)
p 值低于显着性水平; 因此,我们可以否定 *AR(1)*模型中存在单位根的零假设,这使我们确信时间序列是固定的。
p 值低于显着性水平; 因此,我们可以否定`AR(1)`模型中存在单位根的零假设,这使我们确信时间序列是固定的。
然后我们绘制 ACF 和 PACF 图表,这将为我们提供 ARIMA 模型的`p``q`参数:
......@@ -1363,7 +1363,7 @@ plt.show()
日志差异 MSFT DataFrame 的 ACF
从前面的[CFG0] ACF 图中,我们可以看到相关性在的第一时间越过统计显着性阈值,因此滞后 1。因此,我们将 *p = 1* 用作 我们 ARIMA 模型的 AR 顺序。
从前面的[CFG0] ACF 图中,我们可以看到相关性在的第一时间越过统计显着性阈值,因此滞后 1。因此,我们将`p = 1`用作 我们 ARIMA 模型的 AR 顺序。
我们对 PACF 进行相同的操作:
......@@ -1382,15 +1382,15 @@ plt.show()
PACF 用于日志差异 MSFT DataFrame
从前面的 PACF 图中,我们还可以看到相关性以 1 的滞后首次超过统计显着性阈值。因此,我们将 *q = 1* 作为 MA 阶 我们的 ARIMA 模型。
从前面的 PACF 图中,我们还可以看到相关性以 1 的滞后首次超过统计显着性阈值。因此,我们将`q = 1`作为 MA 阶 我们的 ARIMA 模型。
我们还只需要应用一次日志差分转换。 因此,我们将 *d = 1* 用于 ARIMA 模型的集成部分。
我们还只需要应用一次日志差分转换。 因此,我们将`d = 1`用于 ARIMA 模型的集成部分。
### 注意
**注意**:在调用`ARIMA`类时,如果您使用 *d = 0* ,则可能必须手动进行日志区分,在这种情况下,您需要 自己根据预测值还原转换。 如果不是,`statsmodels`包将负责在返回预测值之前恢复转换。
**注意**:在调用`ARIMA`类时,如果您使用`d = 0`,则可能必须手动进行日志区分,在这种情况下,您需要 自己根据预测值还原转换。 如果不是,`statsmodels`包将负责在返回预测值之前恢复转换。
以下代码使用 *p = 1**d = 1**q = 1* 作为阶次值,在`train_set`时间序列上训练 ARIMA 模型`ARIMA`构造函数的元组参数。 然后,我们调用`fit()`方法进行训练并获得模型:
以下代码使用`p = 1``d = 1``q = 1`作为阶次值,在`train_set`时间序列上训练 ARIMA 模型`ARIMA`构造函数的元组参数。 然后,我们调用`fit()`方法进行训练并获得模型:
```py
from statsmodels.tsa.arima_model import ARIMA
......@@ -1879,13 +1879,13 @@ def build_arima_model_screen(self, p_order, d_order, q_order):
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%208/sampleCode40.py)
以下屏幕截图显示了 **Build Arima 模型**页面的结果:
以下屏幕截图显示了**构建 Arima 模型**页面的结果:
![StockExplorer PixieApp Part 2 – add time series forecasting using the ARIMA model](img/00210.jpeg)
模型制作页面
预测子应用程序的最终屏幕是`do_diagnose`路由调用的*诊断模型*屏幕。 在此屏幕中,我们仅显示由和`test_set`变量在笔记本中创建的`compute_test_set_predictions`方法返回的数据帧的折线图。 该图表的`<div>`元素使用`pd_entity`属性,该属性调用称为`compute_test_set_predictions`的中间类方法。 它还具有`<pd_options>`子元素,带有`display()`选项,用于显示折线图。
预测子应用程序的最终屏幕是`do_diagnose`路由调用的“诊断模型”屏幕。 在此屏幕中,我们仅显示由和`test_set`变量在笔记本中创建的`compute_test_set_predictions`方法返回的数据帧的折线图。 该图表的`<div>`元素使用`pd_entity`属性,该属性调用称为`compute_test_set_predictions`的中间类方法。 它还具有`<pd_options>`子元素,带有`display()`选项,用于显示折线图。
以下代码显示了`do_diagnose_screen`路由的实现:
......
......@@ -4,9 +4,9 @@
*福尔摩斯*
在本章中,我们重点介绍一种称为图的基本计算机科学数据模型,以及在它们上常用的不同类型的算法。 作为数据科学家或开发人员,熟悉图形并迅速识别它们何时提供解决特定数据问题的正确解决方案非常重要。 例如,图形非常适合基于 GPS 的应用程序(例如 Google Maps),并考虑到各种参数(包括用户是开车,步行还是乘坐公共交通工具)找到从 A 点到 B 点的最佳路线 ,或者用户想要的是最短的路线,还是无论公路总距离如何都可以最大限度地利用高速公路的路线。 这些参数中的一些也可以是实时参数,例如交通状况和天气。 使用图的另一类重要应用是社交网络,例如 Facebook 或 Twitter,其中顶点表示个人,边表示关系,例如*是朋友**紧随*
在本章中,我们重点介绍一种称为图的基本计算机科学数据模型,以及在它们上常用的不同类型的算法。 作为数据科学家或开发人员,熟悉图形并迅速识别它们何时提供解决特定数据问题的正确解决方案非常重要。 例如,图形非常适合基于 GPS 的应用程序(例如 Google Maps),并考虑到各种参数(包括用户是开车,步行还是乘坐公共交通工具)找到从 A 点到 B 点的最佳路线 ,或者用户想要的是最短的路线,还是无论公路总距离如何都可以最大限度地利用高速公路的路线。 这些参数中的一些也可以是实时参数,例如交通状况和天气。 使用图的另一类重要应用是社交网络,例如 Facebook 或 Twitter,其中顶点表示个人,边表示关系,例如*好友**关注*
我们将从对图形和相关图形算法的高级介绍开始本章。 然后,我们将介绍`networkx`,这是一个 Python 库,可轻松加载,操纵和可视化图形数据结构,并提供丰富的图形算法集。 我们将通过建立样本分析来继续讨论,该样本分析使用各种图形算法分析美国的航班数据,其中机场用作顶点,航班用作边线。 与往常一样,我们还将通过构建一个简单的仪表板 PixieApp 来对这些分析进行操作。 我们将通过使用在第 8 章和*金融时间序列分析和预测*中学习到的时间序列技术构建历史模型来建立预测模型。
我们将从对图形和相关图形算法的高级介绍开始本章。 然后,我们将介绍`networkx`,这是一个 Python 库,可轻松加载,操纵和可视化图形数据结构,并提供丰富的图形算法集。 我们将通过建立样本分析来继续讨论,该样本分析使用各种图形算法分析美国的航班数据,其中机场用作顶点,航班用作边线。 与往常一样,我们还将通过构建一个简单的仪表板 PixieApp 来对这些分析进行操作。 我们将通过使用在第 8 章和“金融时间序列分析和预测”中学习到的时间序列技术构建历史模型来建立预测模型。
# 图形简介
......@@ -20,7 +20,7 @@
将柯尼斯堡七桥问题简化为图形问题
使用更正式的定义,**图**是表示对象(称为**顶点****节点**)之间对象之间的成对关系(称为**边缘**)的数据结构。 )。 通常使用以下表示法表示图形: *G =(V,E)*其中`V`是顶点集,而`E`是顶点集 的边缘。
使用更正式的定义,**图**是表示对象(称为**顶点****节点**)之间对象之间的成对关系(称为**边缘**)的数据结构。 )。 通常使用以下表示法表示图形:`G = (V, E)`其中`V`是顶点集,而`E`是顶点集 的边缘。
图主要有两大类:
......@@ -41,7 +41,7 @@
图的邻接矩阵表示(有向和无向)
重要的是要注意,邻接矩阵表示具有恒定的空间复杂度,即![Graph representations](img/00219.jpeg),其中`n`是顶点数,但是的时间复杂度为 *O(1)*,这是恒定时间,用于计算两个顶点之间是否存在边连接。 当图形密集(边缘很多)时,高空间复杂度可能还可以,但在图形稀疏时可能会浪费空间,在这种情况下,我们可能更喜欢以下邻接表表示形式。
重要的是要注意,邻接矩阵表示具有恒定的空间复杂度,即![Graph representations](img/00219.jpeg),其中`n`是顶点数,但是的时间复杂度为`O(1)`,这是恒定时间,用于计算两个顶点之间是否存在边连接。 当图形密集(边缘很多)时,高空间复杂度可能还可以,但在图形稀疏时可能会浪费空间,在这种情况下,我们可能更喜欢以下邻接表表示形式。
### 注意
......@@ -55,7 +55,7 @@
图的邻接表表示(有向和无向)
与邻接矩阵表示法相反,邻接列表表示法具有较小的空间复杂度,即 *O(m + n)*,其中`m`是边的个数,`n`是顶点数。 但是,与邻接矩阵的 *O(1)*相比,时间复杂度增加到 *O(m)*。 由于这些原因,当图稀疏连接时(即没有很多边),最好使用邻接表表示。
与邻接矩阵表示法相反,邻接列表表示法具有较小的空间复杂度,即`O(m + n)`,其中`m`是边的个数,`n`是顶点数。 但是,与邻接矩阵的`O(1)`相比,时间复杂度增加到`O(m)`。 由于这些原因,当图稀疏连接时(即没有很多边),最好使用邻接表表示。
正如前面的讨论所暗示的那样,要使用哪种图形表示形式在很大程度上取决于图形密度,还取决于我们计划使用的算法类型。 在下一节中,我们将讨论最常用的图形算法。
......@@ -74,9 +74,9 @@
在 BFS 和 DFS 中查找未探索的顶点的顺序
* **连接的组件和强连接的组件**:图的连接的组件是一组顶点,其中任意两个顶点之间都有路径。 注意,该定义仅指定必须存在路径,这意味着只要存在路径,两个顶点之间就不必具有边。 在有向图的情况下,由于附加的方向约束,连接的组件被称为“强连接的组件”,这不仅要求任何顶点 A 都应具有通往任何其他顶点 B 的路径,而且 B 也必须具有 通往 A 的道路。
* **连通组件和强连通组件**:图的连通组件是一组顶点,其中任意两个顶点之间都有路径。 注意,该定义仅指定必须存在路径,这意味着只要存在路径,两个顶点之间就不必具有边。 在有向图的情况下,由于附加的方向约束,连通组件被称为“强连通组件”,这不仅要求任何顶点 A 都应具有通往任何其他顶点 B 的路径,而且 B 也必须具有 通往 A 的道路。
下图显示了牢固连接的组件或有向图示例:
下图显示了牢固连组件或有向图示例:
![Graph algorithms](img/00222.jpeg)
......@@ -86,7 +86,7 @@
中心性有多个指标,但我们将重点关注本章稍后将使用的以下四个指标:
* **阶数**:顶点的阶数是该顶点是端点之一的边的数量。 对于有向图,是顶点是源或目标的边数,我们称 **indegree** 是顶点是目标和 **outdegree 的边数** 顶点为源的边的数量。
* **阶数**:顶点的阶数是该顶点是端点之一的边的数量。 对于有向图,是顶点是源或目标的边数,我们称**入度**是顶点为目标的边的数量,**出度**是顶点为源的边的数量。
* **PageRank**:这是 Google,Larry Page 和 Sergey Brin 的创始人开发的著名算法。 PageRank 用于通过对给定网站的重要性进行衡量来对搜索结果进行排名,其中包括计算从其他网站到该网站的链接数。 它还会评估这些链接的质量(即网站链接到您的链接的可信度)。
* **紧密度**:紧密度中心度与给定顶点和图中所有其他顶点之间的最短路径的平均长度成反比。 直觉是顶点离所有其他节点越近,它就越重要。
......@@ -96,7 +96,7 @@
(来源:https://en.wikipedia.org/wiki/Centrality#Closeness_centrality)
其中 *d(y,x)*是节点`x`和`y`之间的边缘长度。
其中`d(y, x)`是节点`x`和`y`之间的边缘长度。
* **最短路径之间的间隔**:根据给定顶点是任意两个节点之间最短路径的一部分的次数进行度量。 直觉是,顶点对最短路径的贡献越大,它就越重要。 这里提供了最短路径之间的数学方程式:
......@@ -108,7 +108,7 @@
### 注意
[ **注意**:有关集中性的更多信息,请参见](https://en.wikipedia.org/wiki/Centrality)。
[**注意**:有关集中性的更多信息,请参见这里](https://en.wikipedia.org/wiki/Centrality)。
## 图形和大数据
......@@ -957,7 +957,7 @@ def setup(self):
现在我们到达步骤,用户选择中心度索引以触发最短路径搜索。 每个复选框都有一个`pd_script`属性,该属性调用`compute_toggle_centrality_layer()`方法。 此方法负责使用通过调用第 1 部分中讨论的`compute_weight()`方法生成的`weight`参数调用 NetworkX `dijkastra_path()`方法。 此方法返回一个数组,其中每个机场构成最短路径。 然后使用此路径创建一个 JSON 对象,该对象包含 GeoJSON 有效载荷,作为要在地图上显示的一组线。
在这一点上,值得暂停讨论什么是层。 **层**是使用 [GeoJSON 格式](http://geojson.org)定义的,我们在第 5 章,*最佳做法和高级内容中对此进行了简要讨论 PixieDust 概念*。 提醒一下,GeoJSON 有效负载是具有特定架构的 JSON 对象,该架构除其他外还包含`geometry`元素,该元素定义了要绘制的对象的形状。
在这一点上,值得暂停讨论什么是层。 **层**是使用 [GeoJSON 格式](http://geojson.org)定义的,我们在第 5 章,“最佳做法和 PixieDust 高级内容”中对此进行了简要讨论。 提醒一下,GeoJSON 有效负载是具有特定架构的 JSON 对象,该架构除其他外还包含`geometry`元素,该元素定义了要绘制的对象的形状。
例如,我们可以使用`LineString`类型定义一条直线,并为直线的两端定义一个经度和纬度坐标数组:
......@@ -1047,7 +1047,7 @@ def get_airport_location(self, airport_code):
在前面的代码中,我们指定了额外的`paint`属性来配置`line-width``line-color`,这些属性是从`setup()`方法中定义的`centrality_indices` JSON 对象获取的。
以下输出显示了使用 **ELAPSED_TIME**(红色)和 **DEGREE**(绿色)中心指数从`BOS``PSC`的最短飞行路线:
以下输出显示了使用`ELAPSED_TIME`(红色)和`DEGREE`(绿色)中心指数从`BOS``PSC`的最短飞行路线:
![Part 2 – Creating the USFlightsAnalysis PixieApp](img/00242.jpeg)
......@@ -1057,7 +1057,7 @@ def get_airport_location(self, airport_code):
### 注意
[您可以在此处找到完整的 *Part 2* 笔记本](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%209/USFlightsAnalysis/US%20Flight%20data%20analysis%20-%20Part%202.ipynb)
[您可以在此处找到完整的第二部分的笔记本](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%209/USFlightsAnalysis/US%20Flight%20data%20analysis%20-%20Part%202.ipynb)
在下一部分中,我们将添加与航班延误和相关航空公司有关的其他数据探索。
......@@ -1095,7 +1095,7 @@ bos_delay = compute_delay_airline_df("DL", "BOS")
display(bos_delay)
```
在 PixieDust 输出中,我们选择 **Line Chart** 菜单,并配置选项对话框,如下所示:
在 PixieDust 输出中,我们选择**折线图**菜单,并配置选项对话框,如下所示:
![Part 3 – Adding data exploration to the USFlightsAnalysis PixieApp](img/00243.jpeg)
......@@ -1317,11 +1317,11 @@ def compute_delay_airline_df(self, airline, delay_org_airport):
# 第 4 部分–创建 ARIMA 模型以预测航班延误
在第 8 章,*金融时间序列分析和预测*中,我们使用时间序列分析建立了预测金融股票的预测模型。 实际上,我们可以在航班延误中使用相同的技术,因为毕竟我们还在这里处理时间序列,因此在本节中,我们将遵循完全相同的步骤。 对于每个目的地机场和可选航空公司,我们将构建一个Pandas DataFrame,其中包含匹配的航班信息。
在第 8 章,“金融时间序列分析和预测”中,我们使用时间序列分析建立了预测金融股票的预测模型。 实际上,我们可以在航班延误中使用相同的技术,因为毕竟我们还在这里处理时间序列,因此在本节中,我们将遵循完全相同的步骤。 对于每个目的地机场和可选航空公司,我们将构建一个Pandas DataFrame,其中包含匹配的航班信息。
### 注意
**注意**:我们将再次使用`statsmodels`库。 如果尚未安装,请确保进行安装,有关更多信息,请参考第 8 章,*金融时间序列分析和预测*
**注意**:我们将再次使用`statsmodels`库。 如果尚未安装,请确保进行安装,有关更多信息,请参考第 8 章,“金融时间序列分析和预测”
例如,让我们集中研究以`BOS`为目的地的所有达美航空(`DL`)航班:
......@@ -1365,7 +1365,7 @@ plt.show()
ARRIVAL_DELAY 数据的部分自相关
从前面的图表中,我们可以假设数据具有趋势和/或季节性,并且不稳定。 使用我们在第 8 章,*金融时间序列分析和预测*中介绍的对数差异技术,对序列进行转换并使用 PixieDust `display()`方法将其可视化,如 以下代码:
从前面的图表中,我们可以假设数据具有趋势和/或季节性,并且不稳定。 使用我们在第 8 章,“金融时间序列分析和预测”中介绍的对数差异技术,对序列进行转换并使用 PixieDust `display()`方法将其可视化,如 以下代码:
### 注意
......@@ -1398,7 +1398,7 @@ display(logdf_diff)
### 注意
**注意**:运行前面的代码时,您可能无法获得与以下屏幕快照完全相同的图表。 这是因为我们在选项对话框中将要显示的**行数配置为`100`,这意味着 PixieDust 在创建图表之前将采取大小为 100 的样本。**
**注意**:运行前面的代码时,您可能无法获得与以下屏幕快照完全相同的图表。 这是因为我们在选项对话框中将要显示的**行数**配置为`100`,这意味着 PixieDust 在创建图表之前将采取大小为 100 的样本。
![Part 4 – Creating an ARIMA model for predicting flight delays](img/00251.jpeg)
......@@ -1438,11 +1438,11 @@ plt.show()
PARI 图表以获取 ARRIVAL_DELAY 数据的对数差异
作为第 8 章,*金融时间序列分析和预测*的提醒,ARIMA 模型由三个阶组成:`p``d``q`。 从前面的两个图表中,我们可以推断出要构建的 ARIMA 模型的这些顺序:
作为第 8 章,“金融时间序列分析和预测”的提醒,ARIMA 模型由三个阶组成:`p``d``q`。 从前面的两个图表中,我们可以推断出要构建的 ARIMA 模型的这些顺序:
* **自回归阶数 p 为 1**:对应于 ACF 第一次越过有效水平
* **积分顺序 d 为 1**:我们必须做一次对数差异
* **移动平均阶数 q 为 1**:对应于 PACF 首次超过有效水平
* **阶数`p`为 1 的自回归**:对应于 ACF 第一次越过有效水平
* **阶数`d`为 1 的集成**:我们必须做一次对数差异
* **阶数`q`为 1 的移动平均**:对应于 PACF 首次超过有效水平
基于这些假设,我们可以使用`statsmodels`包构建 ARIMA 模型,并获取有关其残留误差的信息,如以下代码所示:
......@@ -1684,7 +1684,7 @@ class RouteAnalysisApp(TemplateTabbedApp):
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%209/sampleCode44.py)
当我们像上一节中一样使用 BOS 和 PSC 运行`USFlightsAnalysis` PixieApp 时。 在**飞行延迟预测**标签中,我们选择 **BOS- > DEN** 飞行段。
当我们像上一节中一样使用 BOS 和 PSC 运行`USFlightsAnalysis` PixieApp 时。 在**飞行延迟预测**标签中,我们选择`BOS -> DEN`飞行段。
结果如下所示:
......
......@@ -2,11 +2,11 @@
> “我们正在创造和雇用人员来填补“新领”职位–在网络安全,数据科学,人工智能和认知业务等领域扮演着全新的角色。”
*Ginni Rometty* ,IBM 董事长兼首席执行官
*Ginni Rometty*,IBM 董事长兼首席执行官
再次感谢读者,祝贺您阅读这些长章节并尝试了部分或全部示例代码的漫长旅程。 我试图在深入研究特定主题的基础知识(例如深度学习或时间序列分析)与为从业者提供全面的示例代码之间提供良好的组合。 我特别希望您发现在单个 Jupyter Notebook 中将数据科学分析与 PixieApp 应用程序编程模型紧密集成的想法有趣且新颖。 但是,最重要的是,我希望您发现它有用,并且可以在您自己的项目中以及与您自己的团队一起重用。
在第 1 章,*开发人员对数据科学的观点*开头,我使用了 Drew's Conway Venn 图(这是我的最爱之一)来表示什么是数据科学。 以及为什么数据科学家被广泛认为是独角兽。 考虑到 Drew Conway 的所有方面,我想扩展此图,以表示开发人员在数据科学领域的重要且不断增长的作用,如下图所示:
在第 1 章,“开发人员对数据科学的观点”开头,我使用了 Drew's Conway Venn 图(这是我的最爱之一)来表示什么是数据科学。 以及为什么数据科学家被广泛认为是独角兽。 考虑到 Drew Conway 的所有方面,我想扩展此图,以表示开发人员在数据科学领域的重要且不断增长的作用,如下图所示:
![Final Thoughts](img/00258.jpeg)
......@@ -18,15 +18,15 @@ Drew 的数据科学 Conway Venn 图现在包括开发人员
这是我非常喜欢的部分,因为我无需表达准确性就可以表达前瞻性意见,因为根据定义,这些只是我的观点![Forward thinking – what to expect for AI and data science](img/00259.jpeg)
正如我在第 1 章,*开发人员对数据科学的观点*中所解释的那样,我相信 AI 和数据科学将继续存在,它们将继续对现有行业造成破坏。 在可预见的未来,最有可能以加速的速度发展。 这肯定会影响工作的总数,并且类似于我们过去看到的其他技术革命(农业,工业,信息等),有些将消失,而新的将被创造。
正如我在第 1 章,“开发人员对数据科学的观点”中所解释的那样,我相信 AI 和数据科学将继续存在,它们将继续对现有行业造成破坏。 在可预见的未来,最有可能以加速的速度发展。 这肯定会影响工作的总数,并且类似于我们过去看到的其他技术革命(农业,工业,信息等),有些将消失,而新的将被创造。
2016 年,IBM 董事长兼首席执行官 Ginny Rometty 在[致唐纳德·特朗普总统的一封信](https://www.ibm.com/blogs/policy/ibm-ceo-ginni-romettys-letter-u-s-president-elect)中,讨论了通过创建她称为“新领”的新型工作来更好地为 AI 革命做准备的需要,如以下摘录所示:
> “在当今的 IBM 工作并不总是需要大学学位;在我们美国的一些中心,多达三分之一的员工不到四年制学位。最重要的是相关技能,有时会获得 此外,我们正在创造和雇用人员来填补“新领”职位-在网络安全,数据科学,人工智能和认知业务等领域扮演全新角色。”
如果我们成功地实现了数据科学的民主化,那么这些“新领子”工作就只能创造足够的数量,因为数据科学是 AI 的命脉,每个人都需要以某种能力参与进来; 开发人员,业务线用户,数据工程师等。 不难想象,对这些新型工作的需求将如此之大,以至于传统的学术途径将无法满足需求。 相反,该行业将有责任通过制定旨在重新培训所有可能面临裁员风险的现有工人的新计划来填补这一空白。 将会出现[类似于 Apple 的 *Everyone Can Code* 程序的新程序](https://www.apple.com/everyone-can-code); 也许像*之类的任何人都可以做数据科学*。 我还认为 **MOOC****大规模开放在线课程**的缩写)将发挥更大的作用,今天,由于主要 MOOC 参与者之间建立了许多合作关系, 例如 Coursera 和 edX,以及像 IBM 这样的公司(请参阅[这个页面](https://www.coursera.org/ibm))。
如果我们成功地实现了数据科学的民主化,那么这些“新领子”工作就只能创造足够的数量,因为数据科学是 AI 的命脉,每个人都需要以某种能力参与进来; 开发人员,业务线用户,数据工程师等。 不难想象,对这些新型工作的需求将如此之大,以至于传统的学术途径将无法满足需求。 相反,该行业将有责任通过制定旨在重新培训所有可能面临裁员风险的现有工人的新计划来填补这一空白。 将会出现[类似于 Apple 的`Everyone Can Code`程序的新程序](https://www.apple.com/everyone-can-code); 也许像*任何人都可以做数据科学*。 我还认为 **MOOC****大规模开放在线课程**的缩写)将发挥更大的作用,今天,由于主要 MOOC 参与者之间建立了许多合作关系, 例如 Coursera 和 edX,以及像 IBM 这样的公司(请参阅[这个页面](https://www.coursera.org/ibm))。
公司还可以做其他事情,以便更好地为 AI 和数据科学革命做准备。 在第 1 章和*开发人员对数据科学的观点*中,我讨论了数据科学策略的三个支柱,它们可以帮助我们实现这一宏伟的目标:数据 ,服务和工具。
公司还可以做其他事情,以便更好地为 AI 和数据科学革命做准备。 在第 1 章和“开发人员对数据科学的观点”中,我讨论了数据科学策略的三个支柱,它们可以帮助我们实现这一宏伟的目标:数据 ,服务和工具。
在服务方面,公有云的高速增长在很大程度上促进了多个领域的高质量服务的整体增长:数据持久性,认知,流传输等。 亚马逊,Facebook,谷歌,IBM 和 Microsoft 等提供商在以服务为先的方法以及强大的平台支持下为服务开发者提供一致体验的创新能力建设中发挥着领导作用。 随着越来越多的强大服务以越来越快的速度发布,这一趋势将继续加速。
......@@ -37,27 +37,27 @@ Drew 的数据科学 Conway Venn 图现在包括开发人员
# 参考
* [DeepQA(IBM)](https://researcher.watson.ibm.com/researcher/view_group_subpage.php?id=2159)
* [*Watson 中的深度解析*, *McCord* , *Murdock* , *Boguraev* ](http://brenocon.com/watson_special_issue/03%20Deep%20parsing.pdf)
* [*Jupyter for Data Science* , *Dan Toomey* , *Packt Publishing* ](https://www.packtpub.com/big-data-and-business-intelligence/jupyter-data-science)
* [《Watson 中的深度解析》,*McCord*,*Murdock*,*Boguraev* ](http://brenocon.com/watson_special_issue/03%20Deep%20parsing.pdf)
* [《用于数据科学的 Jupyter》,*Dan Toomey*,*Packt Publishing* ](https://www.packtpub.com/big-data-and-business-intelligence/jupyter-data-science)
* [PixieDust 文档](https://pixiedust.github.io/pixiedust/)
* [*您一直想要的 Jupyter 笔记本的 Visual Python 调试器*, *David Taieb* ](https://medium.com/ibm-watson-data-lab/the-visual-python-debugger-for-jupyter-notebooks-youve-always-wanted-761713babc62)
* [*在网络上共享 Jupyter 笔记本图表*, *David Taieb* ](https://medium.com/ibm-watson-data-lab/share-your-jupyter-notebook-charts-on-the-web-43e190df4adb)
* [*使用 PixieDust 1.1 版*, *David Taieb* ](https://medium.com/ibm-watson-data-lab/deploy-your-analytics-as-web-apps-using-pixiedusts-1-1-release-d08067584a14)
* [《您一直想要的 Jupyter 笔记本的 Visual Python 调试器》,*David Taieb*](https://medium.com/ibm-watson-data-lab/the-visual-python-debugger-for-jupyter-notebooks-youve-always-wanted-761713babc62)
* [《在网络上共享 Jupyter 笔记本图表》,*David Taieb* ](https://medium.com/ibm-watson-data-lab/share-your-jupyter-notebook-charts-on-the-web-43e190df4adb)
* [《使用 PixieDust 1.1 版》,*David Taieb* ](https://medium.com/ibm-watson-data-lab/deploy-your-analytics-as-web-apps-using-pixiedusts-1-1-release-d08067584a14)
* [Kubernetes](https://kubernetes.io/docs/home/)
* [](https://amueller.github.io/word_cloud/index.html)
* [*神经网络与深度学习*, *Michael Nielsen* ](http://neuralnetworksanddeeplearning.com/index.html)
* [*深度学习*,*伊恩·古德费洛*, *Yoshua Bengio* 和 *Aaron Courville* ,*麻省理工学院出版社*](http://www.deeplearningbook.org/)
* [](https://amueller.github.io/word_cloud/index.html)
* [《神经网络与深度学习》,*Michael Nielsen* ](http://neuralnetworksanddeeplearning.com/index.html)
* [《深度学习》,*伊恩·古德费洛*,*Yoshua Bengio* 和 *Aaron Courville*,*麻省理工学院出版社*](http://www.deeplearningbook.org/)
* [TensorFlow 文档站点](https://www.tensorflow.org/)
* [*TensorFlow For Poets* ](https://codelabs.developers.google.com/codelabs/tensorflow-for-poets)
* [*Tensorflow 和深度学习-没有博士学位,MartinGörner*](https://www.youtube.com/watch?v=vq2nnJ4g6N0)
* [《写给诗人的 TensorFlow》](https://codelabs.developers.google.com/codelabs/tensorflow-for-poets)
* [《Tensorflow 和深度学习-无需博士学位》,MartinGörner](https://www.youtube.com/watch?v=vq2nnJ4g6N0)
* [Apache Spark](https://spark.apache.org/)
* [Tweepy 库文档](http://tweepy.readthedocs.io/en/latest/)
* [*Watson Developer Cloud Python SDK* ](https://github.com/watson-developer-cloud/python-sdk)
* [Kafka-Python](https://kafka-python.readthedocs.io/en/master/usage.html)
* [*使用 Spark* , *David Taieb* 的 Twitter Hashtag 的情感分析](https://medium.com/ibm-watson-data-lab/real-time-sentiment-analysis-of-twitter-hashtags-with-spark-7ee6ca5c1585)
* [*使用统计和机器学习模型的时间序列预测*, *Jeffrey Yau* ](https://www.youtube.com/watch?v=_vQ0W_qXMxk)
* [*时间序列预测理论*, *Analytics University* ](https://www.youtube.com/watch?v=Aw77aMLj9uM)
* [*时间序列分析-PyCon 2017* , *Aileen Nielsen* ](https://www.youtube.com/watch?v=zmfe2RaX-14)
* [《使用 Spark 的 Twitter Hashtag 的情感分析》,*David Taieb*](https://medium.com/ibm-watson-data-lab/real-time-sentiment-analysis-of-twitter-hashtags-with-spark-7ee6ca5c1585)
* [《使用统计和机器学习模型的时间序列预测》,*Jeffrey Yau* ](https://www.youtube.com/watch?v=_vQ0W_qXMxk)
* [《时间序列预测理论》,*Analytics University* ](https://www.youtube.com/watch?v=Aw77aMLj9uM)
* [《时间序列分析-PyCon 2017》,*Aileen Nielsen* ](https://www.youtube.com/watch?v=zmfe2RaX-14)
* [Quandl Python 文档](https://docs.quandl.com/docs/python)
* [Statsmodels 文档](https://www.statsmodels.org/stable/index.html)
* [NetworkX](https://networkx.github.io/documentation/networkx-2.1/index.html)
......@@ -404,7 +404,7 @@ Drew 的数据科学 Conway Venn 图现在包括开发人员
参数:
* **实体**:[可选]数据集作为输入传递到 PixieApp。 可以用`pd_entity`属性引用,也可以直接作为`pixieapp_entity`字段引用。
* **** kwargs**:运行时传递给 PixieApp 的关键字参数。 例如,使用`runInDialog=”true”`将在对话框中启动 PixieApp。
* `**kwargs`:运行时传递给 PixieApp 的关键字参数。 例如,使用`runInDialog=”true”`将在对话框中启动 PixieApp。
```py
app = MyPixieApp()
......@@ -418,7 +418,7 @@ Drew 的数据科学 Conway Venn 图现在包括开发人员
参数:
* **路由方法**:要调用的方法。
* **** kwargs**:要传递给 route 方法的关键字参数。
* `**kwargs`:要传递给 route 方法的关键字参数。
```py
app.invoke_route(app.route_method, arg1 = “value1”, arg2 = “value2”)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册