提交 c3698d65 编写于 作者: W wizardforcel

2021-02-23 22:32:59

上级 14cdcf76
......@@ -7,7 +7,7 @@
我们将涵盖以下主题:
* k 最近邻的概念
* KNN 以预测电影的收视率
* KNN 以预测电影的收视率
* 降维和主成分分析
* 具有虹膜数据集的 PCA 示例
* 数据仓库和 ETL 与 ELT
......
# 处理真实数据
在本章中,我们将讨论处理现实数据的挑战,以及您可能会遇到的一些怪癖。 本章首先讨论偏差方差折衷,这是一种更原则性的方式,用于讨论您可能过度拟合和欠拟合数据的不同方式,以及它们之间如何相互关联。 然后,我们讨论 k 折交叉验证技术,该技术是打击过度拟合的重要工具,并介绍了如何使用 Python 实该技术。
在本章中,我们将讨论处理现实数据的挑战,以及您可能会遇到的一些怪癖。 本章首先讨论偏差方差折衷,这是一种更原则性的方式,用于讨论您可能过度拟合和欠拟合数据的不同方式,以及它们之间如何相互关联。 然后,我们讨论 k 折交叉验证技术,该技术是打击过度拟合的重要工具,并介绍了如何使用 Python 实该技术。
接下来,我们分析在实际应用任何算法之前清除数据并对其进行规范化的重要性。 我们看到一个示例,用于确定网站上最受欢迎的页面,这些页面将演示清洁数据的重要性。 本章还涵盖了记住对数值数据进行规范化的重要性。 最后,我们研究如何检测异常值并加以处理。
......
......@@ -1062,7 +1062,7 @@ print (zippedResults.max())
如您所见,一方面,我们使用`ml`而不是`MLlib`,这是因为新的基于数据帧的 API 在那里。
# 实线性回归
# 实线性回归
在此示例中,我们要做的是实现线性回归,而线性回归只是将一条线拟合到一组数据的一种方式。 在本练习中,我们要做的是获取一堆二维的伪造数据,并尝试使用线性模型将一条线拟合到该数据上。
......
......@@ -748,7 +748,7 @@ $> pip install git+git://github.com/fchollet/keras.git
该项目最初称为 IPython,由 Fernando Perez 于 2001 年作为一个免费项目启动。 通过他的工作,作者打算解决 Python 堆栈中的不足问题,并向公众提供用于数据调查的用户编程接口,该接口可以轻松地在数据发现和软件过程中结合科学方法(主要是实验和交互式发现) 发展。
科学的方法意味着可以以可重复的方式对不同的假设进行快速实验(数据科学中的数据探索和分析也是如此),当使用此界面时,您将能够更自然地实探索性,迭代性,反复试验和错误研究策略 您的代码编写。
科学的方法意味着可以以可重复的方式对不同的假设进行快速实验(数据科学中的数据探索和分析也是如此),当使用此界面时,您将能够更自然地实探索性,迭代性,反复试验和错误研究策略 您的代码编写。
最近(在 2015 年春季期间),IPython 项目的很大一部分移到了一个名为 Jupyter 的新项目中。 这个新项目将原始 IPython 接口的潜在可用性扩展到了广泛的编程语言,例如:
......
......@@ -1670,7 +1670,7 @@ In: from sklearn.svm import LinearSVC
结果不包括通常将其系数估计为零的所有变量。 仅当变量的系数为非零时,该变量才被认为对数据集和要素集变化稳定,这是要包含在模型中的重要内容(因此,其名称为“稳定性选择”)。
让我们通过实选择方法(通过使用我们之前使用的数据集)进行测试:
让我们通过实选择方法(通过使用我们之前使用的数据集)进行测试:
```py
In: from sklearn.linear_model import RandomizedLogisticRegression
......
......@@ -376,7 +376,7 @@ Out: Community 0
关于图形的简短介绍将要介绍的最后一个算法是`coloring`。 这是一种为节点分配标签的图形方式,邻居(即具有链接的节点)必须具有不同的标签(或颜色)。 为了解释该算法为何如此重要,我们将使用一个实际示例。 电信网络由遍布地球的不同频率的天线组成。 将每个天线视为一个节点,并将频率视为该节点的标签。 如果天线的距离小于定义的距离(假设距离足够近,会引起干扰),则说明它们与边缘相连。 我们是否可以找到分配的最低频率数(以使公司必须支付的费用降至最低)并避免相邻天线之间的干扰(即通过为链接节点分配不同的频率)?
该解决方案由图形着色算法给出。 从理论上讲,这类算法的解决方案是 NP 难解的,尽管有很多近似方法可以快速获得次优解决方案,但几乎找不到最佳解决方案。 NetworkX 实贪婪方法来解决着色问题。 该函数返回的是一个字典,其中每个节点(字典中的键)包含颜色(字典中键的值)。 作为示例,让我们在示例图中查看颜色的分配,然后让我们看到颜色:
该解决方案由图形着色算法给出。 从理论上讲,这类算法的解决方案是 NP 难解的,尽管有很多近似方法可以快速获得次优解决方案,但几乎找不到最佳解决方案。 NetworkX 实贪婪方法来解决着色问题。 该函数返回的是一个字典,其中每个节点(字典中的键)包含颜色(字典中键的值)。 作为示例,让我们在示例图中查看颜色的分配,然后让我们看到颜色:
```py
In: G = nx.krackhardt_kite_graph()
......
......@@ -97,7 +97,7 @@ HDFS 的体系结构是主从结构。 如果主服务器(称为**名称节点
映射步骤之后,每个映射器实例还可以运行一个可选步骤,即合并器。 基本上可以预期,如果可能的话,在映射器上执行减少步骤,通常用于减少要重新整理的信息量,从而加快了处理速度。 在前面的示例中,如果一个映射程序处理输入文件的多行,则在(可选)组合器步骤中,它可以预聚合结果,并输出较少数量的键值对。 例如,如果映射器在每个块中处理 100 行文本,那么当可以将信息汇总为三时,为什么输出 300 个键值对(字符数为 100,单词为 100,行为 100)? 这实际上是合并器的目标。
在 Hadoop 提供的 MapReduce 实中,随机分配操作被分配,从而优化了通信成本,并且每个节点可以运行多个 mapper 和 reducer,从而充分利用了节点上可用的硬件资源。 此外,Hadoop 基础架构还提供了冗余和容错功能,因为同一任务可以分配给多个工作人员。
在 Hadoop 提供的 MapReduce 实中,随机分配操作被分配,从而优化了通信成本,并且每个节点可以运行多个 mapper 和 reducer,从而充分利用了节点上可用的硬件资源。 此外,Hadoop 基础架构还提供了冗余和容错功能,因为同一任务可以分配给多个工作人员。
# 介绍 Apache Spark
......
......@@ -81,7 +81,7 @@ PixieGateway 是一项突破性的创新,具有可以显着加快分析操作
* **调试技术**:介绍 PixieDust 提供的各种调试技术,包括称为 PixieDebugger 的可视化 Python 调试器和用于显示 Python 日志记录消息的`%%PixiedustLog`魔术。
* **运行 Node.js 代码的能力**:我们讨论`pixiedust_node`扩展,该扩展管理负责直接从 Python Notebook 中执行任意 Node.js 脚本的 Node.js 进程的生命周期。
由于开放源代码模型具有透明的开发过程,并且不断增长的用户社区提供了一些有价值的反馈,因此随着时间的推移,我们能够优先考虑和实许多这些高级功能。 我要说明的重点是遵循具有适当许可证的开源模型(PixieDust 使用此处提供的 [Apache 2.0 许可证](https://www.apache.org/licenses/LICENSE-2.0)运作良好。 它帮助我们发展了用户社区,从而为我们提供了必要的反馈,以优先考虑我们认为具有很高价值的新功能,并在某些情况下以 GitHub 拉取请求的形式提供了代码。
由于开放源代码模型具有透明的开发过程,并且不断增长的用户社区提供了一些有价值的反馈,因此随着时间的推移,我们能够优先考虑和实许多这些高级功能。 我要说明的重点是遵循具有适当许可证的开源模型(PixieDust 使用此处提供的 [Apache 2.0 许可证](https://www.apache.org/licenses/LICENSE-2.0)运作良好。 它帮助我们发展了用户社区,从而为我们提供了必要的反馈,以优先考虑我们认为具有很高价值的新功能,并在某些情况下以 GitHub 拉取请求的形式提供了代码。
第 6 章“使用 TensorFlow 进行图像识别”,我将深入探讨四个行业案例中的第一个。 我从机器学习的高级介绍开始,然后是机器学习的子领域深度学习和 TensorFlow 框架的介绍,该框架使构建神经网络模型更加容易。 然后我继续构建图像识别示例应用程序,包括四个部分的相关 PixieApp:
......
此差异已折叠。
此差异已折叠。
......@@ -6,7 +6,7 @@
在本章中,我们将对 PixieApp 框架进行技术上的深入研究。 您既可以将以下信息用作*入门*教程,又可以用作 PixieApp 编程模型的参考文档。
在深入探讨 PixieApp 的基本概念(例如路线和请求)之前,我们将首先对它进行剖析。 为了帮助跟进,我们将逐步构建一个 *GitHub Tracking* 示例应用程序,该示例应用程序将在引入功能和最佳实践时应用这些功能和最佳实践,从构建数据分析到将其集成到 PixieApp 中。
在深入探讨 PixieApp 的基本概念(例如路线和请求)之前,我们将首先对它进行剖析。 为了帮助跟进,我们将逐步构建一个`Github Tracking`示例应用程序,该示例应用程序将在引入功能和最佳实践时应用这些功能和最佳实践,从构建数据分析到将其集成到 PixieApp 中。
在本章的最后,您应该能够将学习到的经验教训应用到您自己的用例中,包括编写自己的 PixieApp。
......@@ -20,7 +20,7 @@
* [HTML5](https://www.w3schools.com/html)
* [CSS3](https://www.w3schools.com/css)
术语 **PixieApp** 代表 **Pixie Application,**,并且旨在强调其与 PixieDust 功能(尤其是`display()` API)的紧密集成。 其主要目标是使开发人员易于构建可以调用 Jupyter Notebook 中实现的数据分析的用户界面。
术语 **PixieApp** 代表 **Pixie 应用**,并且旨在强调其与 PixieDust 功能(尤其是`display()` API)的紧密集成。 其主要目标是使开发人员易于构建可以调用 Jupyter Notebook 中实现的数据分析的用户界面。
PixieApp 遵循[**单页应用程序**(**SPA**)设计模式](https://en.wikipedia.org/wiki/Single-page_application),其中 向用户显示并带有欢迎屏幕,该屏幕会动态更新以响应用户交互。 更新可以是部分刷新,例如在用户单击控件后更新图形,也可以是完全刷新,例如在多步过程中更新新屏幕。 在每种情况下,更新都是通过使用特定机制触发的路由在服务器端进行控制的,我们将在后面讨论。 触发后,路由将执行代码以处理请求,然后发出 HTML 片段,该片段将在客户端应用于正确的目标 [DOM 元素](https://www.w3schools.com/js/js_htmldom.asp)
......@@ -38,7 +38,7 @@ PixieApp 遵循[**单页应用程序**(**SPA**)设计模式](https://en.wiki
[有关 Python 装饰器的更多信息,请参见](https://wiki.python.org/moin/PythonDecorators)
要开始启动,下面的代码显示了一个简单的 *Hello World* PixieApp:
要开始启动,下面的代码显示了一个简单的`Hello World` PixieApp:
```py
#import the pixieapp decorators
......@@ -101,7 +101,7 @@ app.run()
[**注意**:如果您想了解有关 Jinja2 的更多信息,可以在这里阅读完整的文档](http://jinja.pocoo.org/docs/templates)
* **变量**:您可以使用双花括号来访问范围内的变量,例如`"<div>This is my variable {{my_var}}</div>"`。 在渲染期间,`my_var`变量将替换为其实际值。 您还可以使用`.`(点)表示法访问复杂对象,例如`"<div>This is a nested value {{my_var.sub_value}}</div>"`
* **for 循环**:您可以使用`{%for ...%}...{%endfor%}`表示法通过迭代一系列项目(列表,元组,字典等)来动态生成文本,例如:
* **`for`循环**:您可以使用`{%for ...%}...{%endfor%}`表示法通过迭代一系列项目(列表,元组,字典等)来动态生成文本,例如:
```py
{%for message in messages%}
......@@ -109,7 +109,7 @@ app.run()
{%endfor%}
```
* **if 语句**:您可以使用`{%if ...%}...{%elif ...%}...{%else%}…{%endif%}`表示法有条件地输出文本,例如:
* **`if`语句**:您可以使用`{%if ...%}...{%elif ...%}...{%else%}…{%endif%}`表示法有条件地输出文本,例如:
```py
{%if status.error%}
......@@ -503,7 +503,7 @@ def do_retrieve_page(self, page):
作为练习,请随时通过添加其他类型的 API 的可视化来改进此示例应用程序,例如 [Traffic API](https://developer.github.com/v3/repos/traffic)
还需要注意的是,即使大多数 GitHub API 都无需身份验证即可工作,但如果您不提供凭据,服务器可能会限制响应。 要验证请求的身份,您需要使用 GitHub 密码或通过选择 GitHub **设置**页面上的**开发人员设置**菜单,然后单击 **Personal 来生成个人访问令牌。 访问令牌**菜单,然后单击**生成新令牌按钮**
还需要注意的是,即使大多数 GitHub API 都无需身份验证即可工作,但如果您不提供凭据,服务器可能会限制响应。 要验证请求的身份,您需要使用 GitHub 密码或通过选择 GitHub **设置**页面上的**开发人员设置**菜单,然后单击**个人**来生成个人访问令牌。 访问**令牌**菜单,然后单击**生成新令牌按钮**
在单独的 Notebook 单元中,我们将为 GitHub 用户 ID 和令牌创建两个变量:
......@@ -576,7 +576,7 @@ class RepoAnalysis():
## 使用 pd_entity 属性调用 PixieDust display()API
当使用`pd_options`属性创建内核请求时,PixieApp 框架将当前 PixieApp 类用作目标。 但是,您可以通过指定`pd_entity`属性来更改此目标。 例如,您可以指向另一个 PixieApp,或更有趣的是,指向`display()` API 支持的数据结构,例如Pandas或 Spark DataFrame。 在这种情况下,如果您提供了`display()` API 预期的正确选项,则生成的输出将为图表本身(对于 Matplotlib,为图像;对于 Mapbox,为 Iframe;对于 Mapbox,则为 SVG 散景)。 一种获取正确选项的简单方法是在其自己的单元格中调用`display()` API,使用菜单将其配置为所需的图表,然后通过单击**编辑元数据**复制可用的单元格元数据 JSON 片段。 按钮。 (您可能首先需要使用菜单**视图** | **单元格工具栏** | **编辑元数据**来启用按钮)。
当使用`pd_options`属性创建内核请求时,PixieApp 框架将当前 PixieApp 类用作目标。 但是,您可以通过指定`pd_entity`属性来更改此目标。 例如,您可以指向另一个 PixieApp,或更有趣的是,指向`display()` API 支持的数据结构,例如Pandas或 Spark DataFrame。 在这种情况下,如果您提供了`display()` API 预期的正确选项,则生成的输出将为图表本身(对于 Matplotlib,为图像;对于 Mapbox,为 Iframe;对于 Mapbox,则为 SVG 散景)。 一种获取正确选项的简单方法是在其自己的单元格中调用`display()` API,使用菜单将其配置为所需的图表,然后通过单击**编辑元数据**复制可用的单元格元数据 JSON 片段。 按钮。 (您可能首先需要使用菜单**视图 | 单元格工具栏 | 编辑元数据**来启用按钮)。
您也可以指定`pd_entity`,不带任何值。 在这种情况下,PixieApp 框架将使用传递为用于启动 PixieApp 应用程序的`run`方法的第一个参数的实体。 例如,以`cars`为Pandas的`my_pixieapp.run(cars)`或通过`pixiedust.sampleData()`方法创建的 Spark DataFrame。 `pd_entity`的值也可以是返回实体的函数调用。 当您要在渲染之前动态计算实体时,这很有用。 与其他变量一样,`pd_entity`的范围可以是 PixieApp 类或在 Notebook 中声明的任何变量。
......@@ -631,7 +631,7 @@ test.run()
在 PixieApp 中动态创建 DataFrame
回到我们的 *GitHub Tracking* 应用程序,现在让我们将`pd_entity`值应用于从 GitHub Statistics API 加载的 DataFrame 。 我们创建了一个称为`load_commit_activity,`的方法,该方法负责将数据加载到 pandas DataFrame 中,并将其与显示图表所需的`pd_options`一起返回:
回到我们的`Github Tracking`应用程序,现在让我们将`pd_entity`值应用于从 GitHub Statistics API 加载的 DataFrame 。 我们创建了一个称为`load_commit_activity,`的方法,该方法负责将数据加载到 pandas DataFrame 中,并将其与显示图表所需的`pd_options`一起返回:
```py
from datetime import datetime
......@@ -688,7 +688,7 @@ def load_commit_activity(owner, repo_name):
在单独的单元格中使用 display()获取可视化配置
要获取上述图表,您需要选择**折线图**,然后在**选项**对话框中,将`week`列拖放到**键[** 框和`total`列到 **Values** 框。 您还需要选择 Bokeh 作为渲染器。 完成后,请注意,PixieDust 将自动检测到`x`轴为日期时间,并将相应地调整渲染。
要获取上述图表,您需要选择**折线图**,然后在**选项**对话框中,将`week`列拖放到**键**框和`total`列到**值**框。 您还需要选择 Bokeh 作为渲染器。 完成后,请注意,PixieDust 将自动检测到`x`轴为日期时间,并将相应地调整渲染。
使用**编辑元数据**按钮,我们现在可以复制图表选项 JSON 片段:
......@@ -771,7 +771,7 @@ GitHub 回购提交活动可视化
### 注意
[如果您想进一步试验,可以在此处找到 *GitHub Tracking 应用程序*第 2 部分的完整笔记本](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%203/GitHub%20Tracking%20Application/GitHub%20Sample%20Application%20-%20Part%202.ipynb)
[如果您想进一步试验,可以在此处找到 *GitHub 跟踪应用程序*第 2 部分的完整笔记本](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%203/GitHub%20Tracking%20Application/GitHub%20Sample%20Application%20-%20Part%202.ipynb)
## 使用 pd_script 调用任意 Python 代码
......@@ -832,7 +832,7 @@ GitHub 回购提交活动可视化
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%203/sampleCode15.py)
`pd_script`的一种常见用例是在触发内核请求之前更新服务器上的某些状态。 通过添加复选框在折线图和数据统计摘要之间切换可视化,让我们将此技术应用于 *GitHub Tracking* 应用程序。
`pd_script`的一种常见用例是在触发内核请求之前更新服务器上的某些状态。 通过添加复选框在折线图和数据统计摘要之间切换可视化,让我们将此技术应用于`Github Tracking`应用程序。
`do_analyse_repo`返回的 HTML 片段中,我们添加了用于在图表和统计信息摘要之间切换的复选框元素:
......@@ -945,7 +945,7 @@ GitHub 存储库的摘要统计信息
### 注意
[您可以在此处找到 *GitHub Tracking* 应用程序第 3 部分的完整笔记本](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%203/GitHub%20Tracking%20Application/GitHub%20Sample%20Application%20-%20Part%203.ipynb)
[您可以在此处找到`Github Tracking`应用程序第 3 部分的完整笔记本](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%203/GitHub%20Tracking%20Application/GitHub%20Sample%20Application%20-%20Part%203.ipynb)
## 使用 pd_refresh 使应用程序响应更快
......@@ -961,7 +961,7 @@ GitHub 存储库的摘要统计信息
为了更好地理解两种设计之间的差异,让我们比较`RepoAnalysis`类中的两种实现。
对于 **Analysis** 菜单,更改如下:
对于**分析**菜单,更改如下:
之前,控件触发了`analyse_type`路由,将`{{analysis}}`选择作为内核请求的一部分传递给了`analyse_vis{{prefix}}`
......@@ -1031,7 +1031,7 @@ pd_script="self.show_stats='$val(show_stats{{prefix}})'=='true'">
### 注意
[您可以在以下位置找到 *GitHub Tracking* 应用程序第 4 部分的完整笔记本](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%203/GitHub%20Tracking%20Application/GitHub%20Sample%20Application%20-%20Part%204.ipynb)
[您可以在以下位置找到`Github Tracking`应用程序第 4 部分的完整笔记本](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%203/GitHub%20Tracking%20Application/GitHub%20Sample%20Application%20-%20Part%204.ipynb)
## 创建可重用的小部件
......@@ -1077,7 +1077,7 @@ ConsumerApp.run()
在本章中,我们介绍了 PixieApp 编程模型的基本构建模块,使您可以直接在 Notebook 中创建强大的工具和仪表板。
我们还通过展示如何构建 *GitHub Tracking* 示例应用程序(包括详细的代码示例)来说明 PixieApp 的概念和技术。 最佳做法和更高级的 PixieApp 概念将在第 5 章,*最佳做法和高级 PixieDust 概念*中进行介绍,包括事件,流和调试。
我们还通过展示如何构建`Github Tracking`示例应用程序(包括详细的代码示例)来说明 PixieApp 的概念和技术。 最佳做法和更高级的 PixieApp 概念将在第 5 章,“最佳做法和高级 PixieDust 概念”中进行介绍,包括事件,流和调试。
到目前为止,您应该希望对 Jupyter Notebooks,PixieDust 和 PixieApps 如何使数据科学家和开发人员能够通过单一工具(例如 Jupyter Notebook)进行协作来帮助弥合数据科学家和开发人员之间的差距有所了解。
......
......@@ -2,9 +2,9 @@
> “我认为数据是讲故事的最强大机制之一。我收集了大量的数据,然后尝试将其用于讲故事。”
*Steven Levitt**Freakonomics* 的合著者
*Steven Levitt**Freakonomics* 的合著者
在上一章中,我们讨论了 Jupyter Notebook 与 PixieDust 结合如何通过简单的 API 加速您的数据科学项目,这些 API 使您无需编写大量代码即可加载,清理和可视化数据,以及使数据科学家与 PixieApps 开发人员。 在本章中,我们将展示如何通过使用 PixieGateway 服务器将其发布为 Web 应用程序,从 Jupyter Notebook *中释放*您的 PixieApps 和关联的数据分析。 笔记本电脑的这种操作方式对于想要使用 PixieApps 的业务用户角色(业务分析师,C-Suite 高管等等)特别有吸引力,但他们与数据科学家或开发人员不同,可能不喜欢使用 Jupyter 笔记本这样做。 相反,他们希望将其作为经典的 Web 应用程序来访问,或者可能类似于 YouTube 视频一样将其嵌入到博客文章或 GitHub 页面中。 使用网站或博客文章,可以轻松传达有价值的见解和从数据分析中提取的其他结果。
在上一章中,我们讨论了 Jupyter Notebook 与 PixieDust 结合如何通过简单的 API 加速您的数据科学项目,这些 API 使您无需编写大量代码即可加载,清理和可视化数据,以及使数据科学家与 PixieApps 开发人员。 在本章中,我们将展示如何通过使用 PixieGateway 服务器将其发布为 Web 应用程序,从 Jupyter Notebook 中释放您的 PixieApps 和关联的数据分析。 笔记本电脑的这种操作方式对于想要使用 PixieApps 的业务用户角色(业务分析师,C-Suite 高管等等)特别有吸引力,但他们与数据科学家或开发人员不同,可能不喜欢使用 Jupyter 笔记本这样做。 相反,他们希望将其作为经典的 Web 应用程序来访问,或者可能类似于 YouTube 视频一样将其嵌入到博客文章或 GitHub 页面中。 使用网站或博客文章,可以轻松传达有价值的见解和从数据分析中提取的其他结果。
到本章末,您将能够在本地安装和配置 PixieGateway 服务器实例以进行测试,也可以在云中的 Kubernetes 容器中进行安装和配置以进行生产。 对于不熟悉 Kubernetes 的那些读者,我们将在下一部分中介绍这些基础知识。
......@@ -110,9 +110,9 @@ Pixiedust version 1.1.10
### 注意
**注意**:遇到挑战时,请以`admin`作为用户,并使用空白(无密码)作为密码。 我们将在本章后面的 *PixieGateway 服务器配置*部分中介绍如何配置安全性和其他属性。
**注意**:遇到挑战时,请以`admin`作为用户,并使用空白(无密码)作为密码。 我们将在本章后面的“PixieGateway 服务器配置”部分中介绍如何配置安全性和其他属性。
**使用 Kubernetes 和 Docker 进行服务器安装**:如果您需要在生产环境中运行 PixieGateway,并希望通过网络向多个用户提供已部署 PixieApps 的访问权限,请使用此安装方法。
**使用 Kubernetes 和 Docker 服务器安装**:如果您需要在生产环境中运行 PixieGateway,并希望通过网络向多个用户提供已部署 PixieApps 的访问权限,请使用此安装方法。
以下说明将使用 IBM Cloud Kubernetes 服务,但它们可以轻松地适用于其他提供商:
......@@ -165,7 +165,7 @@ Pixiedust version 1.1.10
[**注意**:YAML 是一种非常流行的数据序列化格式,通常用于系统配置。 您可以在这里找到更多信息](http://www.yaml.org/start.html)。
6. 现在,您可以使用`kubectl`为您的 PixieGateway 服务器创建部署和服务。 为了方便起见,PixieGateway GitHub 存储库已经具有`deployment.yml``service.yml`的通用版本,您可以直接参考。 我们将在本章稍后的 *PixieGateway 服务器配置*部分中介绍如何为 Kubernetes 配置这些文件:
6. 现在,您可以使用`kubectl`为您的 PixieGateway 服务器创建部署和服务。 为了方便起见,PixieGateway GitHub 存储库已经具有`deployment.yml``service.yml`的通用版本,您可以直接参考。 我们将在本章稍后的“PixieGateway 服务器配置”部分中介绍如何为 Kubernetes 配置这些文件:
```py
kubectl create -f https://github.com/ibm-watson-data-lab/pixiegateway/raw/master/etc/deployment.yml
......@@ -347,7 +347,7 @@ jupyter kernelgateway --generate-config
## PixieGateway 架构
现在是重新查看第 2 章,*数据科学中使用 Jupyter Notebooks 和 PixieDust* 提出的 PixieGateway 体系结构图的好时机。 该服务器被实现为 [Jupyter 内核网关](https://github.com/jupyter/kernel_gateway)的自定义扩展(称为 Personality)。
现在是重新查看第 2 章,“使用 Jupyter Notebooks 和 PixieDust 的数据科学”提出的 PixieGateway 体系结构图的好时机。 该服务器被实现为 [Jupyter 内核网关](https://github.com/jupyter/kernel_gateway)的自定义扩展(称为 Personality)。
反过来,PixieGateway 服务器提供了扩展点,以自定义某些行为,我们将在本章稍后讨论。
......@@ -359,7 +359,7 @@ PixieGateway 架构图
如图所示,PixieGateway 为三种类型的客户端提供 REST 接口:
* **Jupyter Notebook 服务器**:此调用一组专用的 REST API,用于共享图表并将 PixieApps 发布为 Web 应用程序
* **Jupyter 笔记本服务器**:此调用一组专用的 REST API,用于共享图表并将 PixieApps 发布为 Web 应用程序
* **运行 PixieApp 的浏览器客户端**:特殊的 REST API 管理关联内核中 Python 代码的执行
* **运行管理控制台的浏览器客户端**:一组专用的 REST API,用于管理各种服务器资源和统计信息,例如 PixieApps 和内核实例
......@@ -390,7 +390,7 @@ PixieGateway 架构图
例如,以下代码必须位于其自己的单元格中才能成为运行代码:
正如我们在第 3 章, *PixieApp* 下看到的那样,可以在同一笔记本中声明多个 PixieApp,这些笔记本将用作子 PixieApp 或 主要的 PixieApp。 在这种情况下,我们需要确保它们是在自己的单元格中定义的,并且您不要尝试实例化它们并调用其`run()`方法。
正如我们在第 3 章,“PixieApp”下看到的那样,可以在同一笔记本中声明多个 PixieApp,这些笔记本将用作子 PixieApp 或 主要的 PixieApp。 在这种情况下,我们需要确保它们是在自己的单元格中定义的,并且您不要尝试实例化它们并调用其`run()`方法。
规则是,只有一个主要的 PixieApp 类可以为其调用`run()`方法,并且包含该代码的单元格被 PixieGateway 视为运行代码。
......@@ -414,7 +414,7 @@ PixieApp 生命周期:预热和运行代码
发布后,`title = 'some string'`语句变为`ns1_title = 'some string'`。 PixieGateway 发布者还将在整个代码中更新对`title`的所有引用,以反映新名称。 所有这些重命名都是在运行时自动完成的,开发人员无需执行任何特定操作。
稍后我们将介绍管理控制台的 *PixieApp 详细信息*页面时,将显示真实的代码示例。
稍后我们将介绍管理控制台的“PixieApp 详细信息”页面时,将显示真实的代码示例。
### 提示
......@@ -433,7 +433,7 @@ app.run()
## 发布应用程序
在本部分中,我们将在第 3 章,*引擎盖下的 PixieApp,*中创建的 *GitHub Tracking* 应用程序发布到 PixieGateway 实例中。
在本部分中,我们将在第 3 章,“引擎盖下的 PixieApp”中创建的`Github Tracking`应用程序发布到 PixieGateway 实例中。
### 注意
......@@ -476,7 +476,7 @@ PixieApp 发布对话框
成功发布屏幕
然后,您可以通过单击提供的链接来测试该应用程序,可以将其复制并与团队中的用户共享。 以下屏幕快照显示了 *GitHub Tracking* 应用程序在 PixieGateway 上作为 Web 应用程序运行的三个主屏幕:
然后,您可以通过单击提供的链接来测试该应用程序,可以将其复制并与团队中的用户共享。 以下屏幕快照显示了`Github Tracking`应用程序在 PixieGateway 上作为 Web 应用程序运行的三个主屏幕:
![Publishing an application](img/00070.jpeg)
......@@ -515,7 +515,7 @@ PixieApp 发布对话框
## PixieApp URL 中的编码状态
在某些情况下,您可能希望在 URL 中捕获 PixieApp 的状态作为查询参数,以便可以将其标记为书签和/或与其他人共享。 这个想法是,当使用查询参数时,PixieApp 不是从主屏幕启动,而是自动激活与参数相对应的路由。 例如,在 *GitHub Tracking* 应用程序中,您可以使用`http://localhost:8899/pixieapp/GitHubTracking?query=pixiedust`绕过初始屏幕,直接跳转到显示与给定查询匹配的存储库列表的表。
在某些情况下,您可能希望在 URL 中捕获 PixieApp 的状态作为查询参数,以便可以将其标记为书签和/或与其他人共享。 这个想法是,当使用查询参数时,PixieApp 不是从主屏幕启动,而是自动激活与参数相对应的路由。 例如,在`Github Tracking`应用程序中,您可以使用`http://localhost:8899/pixieapp/GitHubTracking?query=pixiedust`绕过初始屏幕,直接跳转到显示与给定查询匹配的存储库列表的表。
通过将`persist_args`特殊参数添加到路由,可以在激活路由时将查询参数自动添加到 URL。
......@@ -559,7 +559,7 @@ def do_search(self, query):
在此部分中,我们展示了如何轻松共享由`display()` API 创建的图表并将其发布为网页。
使用第 2 章*借助 Jupyter Notebook 和 PixieDust 进行大规模数据科学的示例,*让我们加载汽车性能数据集并使用`display()`创建图表:
使用第 2 章“使用 Jupyter Notebook 和 PixieDust 的大规模数据科学”的示例,让我们加载汽车性能数据集并使用`display()`创建图表:
```py
import pixiedust
......@@ -571,13 +571,13 @@ display(cars)
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%204/sampleCode2.py)
在 PixieDust 输出界面中,选择**条形图**菜单,然后在选项对话框中,为**键选择`horsepower`,为**值选择**和`mpg`,** ],如以下屏幕截图所示:
在 PixieDust 输出界面中,选择**条形图**菜单,然后在选项对话框中,为**键**选择`horsepower`,为**值**选择`mpg`,如以下屏幕截图所示:
![Sharing charts by publishing them as web pages](img/00072.jpeg)
PixieDust Chart 选项
然后,我们使用 **Share** 按钮调用图表共享对话框,如以下屏幕截图所示,该屏幕截图使用 Bokeh 作为渲染器:
然后,我们使用**共享**按钮调用图表共享对话框,如以下屏幕截图所示,该屏幕截图使用 Bokeh 作为渲染器:
### 注意
......@@ -611,7 +611,7 @@ PixieDust Chart 选项
图表页面
前一页显示有关图表的元数据,例如**作者****说明****日期**以及嵌入式 HTML 片段。 请注意,如果图表具有交互性(例如 Bokeh,Brunel 或 Mapbox),则将其保留在 PixieGateway 页面中。
前一页显示有关图表的元数据,例如**作者****说明****日期**以及嵌入式 HTML 片段。 请注意,如果图表具有交互性(例如 Bokeh,Brunel 或 Mapbox),则将其保留在 PixieGateway 页面中。
例如,在前面的屏幕截图中,用户仍然可以滚轮缩放,框缩放和平移以浏览图表或将图表下载为 PNG 文件。
......@@ -648,7 +648,7 @@ PixieDust Chart 选项
## PixieGateway 管理控制台
管理员控制台是管理资源并对它们进行故障排除的好工具。 您可以使用`/admin` URL 访问它。 请注意,您将需要使用您配置的用户/密码进行身份验证(请参阅 *PixieGateway 服务器配置*部分,以获取本章中有关如何配置用户/密码的说明;默认情况下,用户为`admin`密码为<空白>)。
管理员控制台是管理资源并对它们进行故障排除的好工具。 您可以使用`/admin` URL 访问它。 请注意,您将需要使用您配置的用户/密码进行身份验证(请参阅“PixieGateway 服务器配置”部分,以获取本章中有关如何配置用户/密码的说明;默认情况下,用户为`admin`密码为<空白>)。
管理控制台的用户界面由专注于特定任务的多个菜单组成。 让我们一一看一下:
......@@ -681,7 +681,7 @@ PixieDust Chart 选项
该屏幕显示了当前在 PixieGateway 中运行的所有内核的实时表。 每行包含以下信息:
* **内核名称**:这是带有钻取链接的内核名称,其中显示**内核规范**,**日志**和 **Python 控制台[**。
* **内核名称**:这是带有钻取链接的内核名称,其中显示**内核规范**,**日志**和 **Python 控制台**。
* **状态**:将状态显示为`idle`或`busy`。
* **繁忙比率**:这是一个介于 0 到 100% 之间的值,表示自启动以来的内核利用率。
* **正在运行的应用程序**:这是正在运行的 PixieApps 的列表。 每个 PixieApp 是一个向下钻取链接,该链接显示预热代码并运行 PixieApp 的代码。 这对于解决错误非常有用,因为您可以看到 PixieGateway 正在运行什么代码。
......@@ -697,7 +697,7 @@ PixieDust Chart 选项
## Python 控制台
通过单击 **Kernel Stats** 屏幕中的内核链接来调用 Python 控制台。 管理员可以使用它对内核执行任何代码,这对于解决问题很有用。
通过单击**内核状态**屏幕中的内核链接来调用 Python 控制台。 管理员可以使用它对内核执行任何代码,这对于解决问题很有用。
例如,以下屏幕截图显示了如何调用 PixieDust 日志:
......@@ -711,7 +711,7 @@ PixieDust Chart 选项
如果错误仍然不明显,您可以例如在一个临时的 Notebook 中复制预热并运行代码,然后尝试从那里运行它,希望您可以重现该错误并找出问题所在。
您可以通过单击 **Kernel Stats** 屏幕上的 PixieApp 链接来访问预热和运行代码,这将带您进入以下屏幕:
您可以通过单击**内核状态**屏幕上的 PixieApp 链接来访问预热和运行代码,这将带您进入以下屏幕:
![Displaying warmup and run code for a PixieApp](img/00082.jpeg)
......
......@@ -535,7 +535,7 @@ app.run(crimes)
# 图像识别示例应用程序
在涉及构建开放式应用程序的时,您首先需要定义包含足够的 **MVP****最低可行产品**)版本的要求。 使其实用且对用户有价值的功能。 在为实施制定技术决策时,确保尽快获得可行的端到端实施而又不花费太多时间是非常重要的标准。 这个想法是您希望从小处着手,以便快速迭代并改善您的应用程序。
在涉及构建开放式应用程序的时,您首先需要定义包含足够的 **MVP****最低可行产品**)版本的要求。 使其实用且对用户有价值的功能。 在为实现制定技术决策时,确保尽快获得可行的端到端实现而又不花费太多时间是非常重要的标准。 这个想法是您希望从小处着手,以便快速迭代并改善您的应用程序。
对于我们的图像识别示例应用程序的 MVP,我们将使用以下要求:
......
......@@ -1382,7 +1382,7 @@ message_hub_creds = {
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%207/sampleCode27.py)。
至于与 Kafka 的接口,我们可以在多个优质客户端库之间进行选择。 我已经尝试了很多,但是我最常使用的是[`kafka-python`](https://github.com/dpkp/kafka-python),它的优点是可以使用纯 Python 实,因此更易于安装。
至于与 Kafka 的接口,我们可以在多个优质客户端库之间进行选择。 我已经尝试了很多,但是我最常使用的是[`kafka-python`](https://github.com/dpkp/kafka-python),它的优点是可以使用纯 Python 实,因此更易于安装。
要从笔记本计算机安装它,请使用以下命令:
......
......@@ -1659,7 +1659,7 @@ def set_active_ticker(self, ticker):
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%208/sampleCode34.py)
第一个预测屏幕的路线实非常简单。 `Add differencing` / `Remove differencing`按钮具有`pd_script`属性,该属性调用`self.toggle_differencing()`方法和`pd_refresh`属性以更新整个页面。 还定义了三个`<div>`元素,分别调用`show_chart``show_acf``show_pacf`路由,如以下代码所示:
第一个预测屏幕的路线实非常简单。 `Add differencing` / `Remove differencing`按钮具有`pd_script`属性,该属性调用`self.toggle_differencing()`方法和`pd_refresh`属性以更新整个页面。 还定义了三个`<div>`元素,分别调用`show_chart``show_acf``show_pacf`路由,如以下代码所示:
```py
[[ForecastArimaSubApp]]
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册