提交 c54b14bf 编写于 作者: W wizardforcel

2021-02-20 21:56:33

上级 6ef465f9
......@@ -53,9 +53,9 @@ Jupyter Notebook 是在本地运行的 Web 应用程序,其中包含实时代
### 注意
在 Mac 或 Linux 等 Unix 机器上,可以使用 `ls` 显示目录内容,并使用 `cd` 更改目录来完成命令行导航。
在 Mac 或 Linux 等 Unix 机器上,可以使用`ls`显示目录内容,并使用`cd`更改目录来完成命令行导航。
在 Windows 计算机上,使用 `dir` 显示目录内容,而使用 `cd` 更改目录。 例如,如果要将驱动器从 `C:` 更改为 `D:` ,则应执行 `d:` 来更改驱动器。
在 Windows 计算机上,使用`dir`显示目录内容,而使用`cd`更改目录。 例如,如果要将驱动器从`C:`更改为`D:`,则应执行`d:`来更改驱动器。
2. Start a new local Notebook server here by typing the following into the terminal:
......
......@@ -879,7 +879,7 @@ k 折交叉验证算法如下:
### 注意
有关完整的代码,请参考 `Lesson 2` 文件夹中的 `Lesson 2.txt` 文件。
有关完整的代码,请参考`Lesson 2`文件夹中的`Lesson 2.txt`文件。
7. We can then calculate the class accuracies with code that's very similar to step 4\. Do this by running the cell containing the following code:
......@@ -1062,7 +1062,7 @@ k 折交叉验证算法如下:
### 注意
有关完整的代码,请参考 `Lesson 2` 文件夹中的 `Lesson 2.txt` 文件。
有关完整的代码,请参考`Lesson 2`文件夹中的`Lesson 2.txt`文件。
9. Look at the string representation of `X_pca` by typing it alone and executing the cell:
......
......@@ -923,7 +923,7 @@ Bokeh 是一个用于 Python 的交互式可视化库。 其目标是提供与 D
### 注意
有关完整的代码,请参考`Lesson 3` 文件夹中的`Lesson 3.txt`文件。
有关完整的代码,请参考`Lesson 3`文件夹中的`Lesson 3.txt`文件。
![Activity B: Exploring Data with Interactive Visualizations](img/image3_53.jpg)
......
......@@ -841,7 +841,7 @@ while (x < 10):
![](img/5f5a18cf-9165-402f-b685-483810fe90ed.png)
例如,我可以说`stuff`,将其命名为`list`,并具有`1``2``3``4`,现在我可以说`len(stuff)`,那将给我 `4`
例如,我可以说`stuff`,将其命名为`list`,并具有`1``2``3``4`,现在我可以说`len(stuff)`,那将给我`4`
![](img/4d4be20b-31a7-482a-8a25-024e7bbb09e3.png)
......
......@@ -109,7 +109,7 @@ Array[10 10 10 10]
### 对数组执行的三角函数
以下命令将余弦应用于 `b`数组中的每个值,以获得以下结果:
以下命令将余弦应用于`b`数组中的每个值,以获得以下结果:
```py
>>> np.cos(b)
......@@ -865,7 +865,7 @@ p2 2 RAVENA COEYMANS SELKIRK CENTRAL SCHOOL DISTRICT ALBANY
```
该表是针对`ELEMENTARY` 等级和`DELAWARE`县过滤的。 请注意,条件用括号括起来。 这是为了确保评估各个条件,并且如果未提供括号,则 Python 将引发错误。
该表是针对`ELEMENTARY`等级和`DELAWARE`县过滤的。 请注意,条件用括号括起来。 这是为了确保评估各个条件,并且如果未提供括号,则 Python 将引发错误。
## 加入
......
......@@ -157,7 +157,7 @@
*y = 1.405405405 x + 57.87687688*
如果您将前面的方程式绘制为以`57.88`作为截距的直线,并且该线的斜率在 *y* 轴和`Height`的散点图顶部为`1.4` *x* 轴上,则获得以下图:
如果您将前面的方程式绘制为以`57.88`作为截距的直线,并且该线的斜率在 *y* 轴和`Height`的散点图顶部为`1.4`*x* 轴上,则获得以下图:
![Linear regression](img/B03450_05_06.jpg)
......
......@@ -138,7 +138,7 @@ $> pip install < package-name >
$> easy_install < package-name >
```
请注意,在某些系统中,`pip`可能会被命名为`pip3``easy_install`会被命名为`easy_install-3`,以强调一个事实,即两者都在 Python 3 的软件包上运行。如果不确定,请检查 Python 的版本 `pip`正在使用:
请注意,在某些系统中,`pip`可能会被命名为`pip3``easy_install`会被命名为`easy_install-3`,以强调一个事实,即两者都在 Python 3 的软件包上运行。如果不确定,请检查 Python 的版本`pip`正在使用:
```py
$> pip -V
......@@ -1366,7 +1366,7 @@ In: iris_filename = 'datasets-uci-iris.csv'
为了不使本书中印刷的代码片段过于繁琐,我们经常对其进行包装并使其格式正确。 必要时,为了安全地中断代码并将其包装到新行,我们使用反斜杠符号`\`,如前面的代码示例中所示。 当您自己渲染本书的代码时,您可以忽略反斜杠符号并继续在同一行上编写所有指令,或者可以对反斜杠进行数字化后再开始一行,并继续执行代码指令。 请注意,输入反斜杠然后在同一行上继续执行指令将导致执行错误。
除了文件名之外,您还可以指定分隔符(`sep`),小数点的表示方式(十进制),是否有标头(在这种情况下为`header=None`;通常,如果您有标头,则 `header=0`),以及该变量的名称(您可以使用列表;否则,pandas 将提供一些自动命名)。
除了文件名之外,您还可以指定分隔符(`sep`),小数点的表示方式(十进制),是否有标头(在这种情况下为`header=None`;通常,如果您有标头,则`header=0`),以及该变量的名称(您可以使用列表;否则,pandas 将提供一些自动命名)。
另外,我们定义的名称使用单个单词(而不是空格,而是使用下划线)。 因此,我们以后可以像调用方法一样直接调用它们来直接提取单个变量。 例如,`iris.sepal_length`将提取萼片长度数据。
......
......@@ -563,7 +563,7 @@ In: iris['target'].unique() Out: array(['Iris-setosa', 'Iris-versicolor', 'New l
如果要查看有关每个功能的一些统计信息,可以将每列相应地分组; 最终,您也可以使用口罩。 pandas 方法`groupby`将产生与 SQL 语句中的`GROUP BY`子句类似的结果。 下一个要应用的方法应该是一个或多个列上的聚合方法。 例如,`mean()` pandas 聚合方法是`AVG()` SQL 函数的对应方法,用于计算组中值的平均值。 熊猫聚合方法`var()`计算方差; `sum()`求和; `count()`组中的行数; 等等。 请注意,结果仍然是 pandas DataFrame,因此可以将多个操作链接在一起。
对变量的许多常见操作,例如`mean``sum`都是 DataFrame 方法,可以按列(使用参数`axis=0`,即`iris.sum(axis=0)`或按行(使用 `axis=1`):
对变量的许多常见操作,例如`mean``sum`都是 DataFrame 方法,可以按列(使用参数`axis=0`,即`iris.sum(axis=0)`或按行(使用`axis=1`):
* `count`:非空(NaN)值的计数
* `median`:返回中位数; 即第 50 个百分位
......
......@@ -1203,7 +1203,7 @@ In: h1.fit(X[train_idx],y[train_idx])
当您随机选择可用数据的一部分,从而获得比初始数据集小的数据集时,将执行子采样。
二次采样非常有用,尤其是当您需要广泛地检验假设时,尤其是您不希望从极小的测试样本中获得验证时(因此,您可以选择不采用遗忘式方法或使用`KFold` 大量折叠)。 以下是相同的示例:
二次采样非常有用,尤其是当您需要广泛地检验假设时,尤其是您不希望从极小的测试样本中获得验证时(因此,您可以选择不采用遗忘式方法或使用`KFold`大量折叠)。 以下是相同的示例:
```py
In: subsampling = model_selection.ShuffleSplit(n_splits=10,
......@@ -1302,7 +1302,7 @@ In: from sklearn import model_selection
记分器是一个字符串,我们从 Scikit-learn 文档的预定义值部分中找到的可能范围中选择了一个字符串,可以在[这个页面](http://scikit-learn.org/stable/modules/model_evaluation.html)
使用预定义值只需要您从列表中选择一个评估指标(有一些用于分类和回归,有一些用于聚类)并通过将字符串直接插入或使用字符串变量插入`GridSearchCV` 功能。
使用预定义值只需要您从列表中选择一个评估指标(有一些用于分类和回归,有一些用于聚类)并通过将字符串直接插入或使用字符串变量插入`GridSearchCV`功能。
`GridSearchCV`还接受称为`param_grid`的参数,该参数可以是一个字典,其中包含要更改的所有超参数的指示作为键,并作为要引用字典键的值包含要测试的参数列表。 因此,如果要测试关于超参数 *C* 的假设的性能,则可以创建如下字典:
......
......@@ -1045,7 +1045,7 @@ Out: root
从视觉分析来看,只有四个字段是字符串:`protocol_type``service``flag``target`(这是预期的多类目标标签)。
由于我们将使用基于树的分类器,因此我们希望将每个级别的文本编码为每个变量的数字。 使用 scikit-learn,可以使用`sklearn.preprocessing.LabelEncoder`对象完成此操作。 在 Spark 中等效的是`pyspark.ml.feature`软件包的`StringIndexer`
我们需要用 Spark 编码四个变量,然后我们必须将四个`StringIndexer`对象以级联的方式链接在一起:它们每个都将在 DataFrame 的特定列上操作,并输出一个带有附加列的 DataFrame(类似 `map`操作)。 映射是自动的,按频率排序:Spark 在所选列中对每个级别的计数进行排名,将最流行的级别映射到`0`,然后映射到`1`,依此类推。 请注意,通过此操作,您将遍历数据集一次以计算每个级别的出现次数。 如果您已经知道该映射,则广播该映射并使用`map`操作会更有效,如本章开头所示。
我们需要用 Spark 编码四个变量,然后我们必须将四个`StringIndexer`对象以级联的方式链接在一起:它们每个都将在 DataFrame 的特定列上操作,并输出一个带有附加列的 DataFrame(类似`map`操作)。 映射是自动的,按频率排序:Spark 在所选列中对每个级别的计数进行排名,将最流行的级别映射到`0`,然后映射到`1`,依此类推。 请注意,通过此操作,您将遍历数据集一次以计算每个级别的出现次数。 如果您已经知道该映射,则广播该映射并使用`map`操作会更有效,如本章开头所示。
更笼统地说,`pyspark.ml.feature`包中包含的所有类都用于从 DataFrame 中提取,转换和选择要素。 他们所有人都在 DataFrame 中读取一些列并创建其他列。
......@@ -1075,7 +1075,7 @@ In: from pyspark.ml import Pipeline
test_num_df = indexer.transform(test_df)
```
让我们进一步研究管道。 在这里,我们将看到管道中的阶段:不适合的管道和适合的管道。 请注意,Spark 和 scikit-learn 之间有很大的区别:在 scikit-learn 中,fit 和 transform 在同一个对象上调用,在 Spark 中,`fit`方法产生一个新对象(通常,其名称与 `Model`后缀,就像`Pipeline``PipelineModel`一样),您可以在其中调用`transform`方法。 这种差异源于闭包-拟合的对象易于分布在流程和集群中:
让我们进一步研究管道。 在这里,我们将看到管道中的阶段:不适合的管道和适合的管道。 请注意,Spark 和 scikit-learn 之间有很大的区别:在 scikit-learn 中,fit 和 transform 在同一个对象上调用,在 Spark 中,`fit`方法产生一个新对象(通常,其名称与`Model`后缀,就像`Pipeline``PipelineModel`一样),您可以在其中调用`transform`方法。 这种差异源于闭包-拟合的对象易于分布在流程和集群中:
```py
In: print(pipeline.getStages(), '\n')
......
......@@ -149,7 +149,7 @@ c.NotebookApp.open_browser = False
### 注意
**注意**:感叹号语法特定于 Jupyter Notebook,它表示其余命令将作为系统命令执行。 例如,您可以使用 `!ls` 列出当前工作目录下的所有文件和目录。
**注意**:感叹号语法特定于 Jupyter Notebook,它表示其余命令将作为系统命令执行。 例如,您可以使用`!ls`列出当前工作目录下的所有文件和目录。
2. 使用**单元格** |运行单元格。 **运行单元格**菜单或工具栏上的 **Run** 图标。 您还可以使用以下键盘快捷键来运行单元格:
......
......@@ -94,7 +94,7 @@ app.run()
将请求与路线匹配
定义为路由的方法的预期约定是返回 HTML 片段,其中可以包含 Jinja2 模板构造。 Jinja2 是功能强大的 Python 模板引擎,提供了丰富的功能来动态生成文本,包括对 Python 变量,方法和控制结构的访问,例如`if...else` `the for`循环等。 涵盖的所有功能将超出本书的范围,但是让我们讨论一些经常使用的重要结构:
定义为路由的方法的预期约定是返回 HTML 片段,其中可以包含 Jinja2 模板构造。 Jinja2 是功能强大的 Python 模板引擎,提供了丰富的功能来动态生成文本,包括对 Python 变量,方法和控制结构的访问,例如`if...else``the for`循环等。 涵盖的所有功能将超出本书的范围,但是让我们讨论一些经常使用的重要结构:
### 注意
......@@ -127,7 +127,7 @@ app.run()
### 注意
**注意**:我们之所以不使用更具 Pythonic 风格的 `self` 关键字,是因为 Jinja2 本身已经采用了该关键字。
**注意**:我们之所以不使用更具 Pythonic 风格的`self`关键字,是因为 Jinja2 本身已经采用了该关键字。
* **Method arguments**: This is useful when the route arguments use the `*` value and you want to have access to that value at runtime. In this case, you can add arguments to the method itself using the same name as the one defined in the route arguments and the PixieApp framework will automatically pass the correct value.
......
......@@ -648,7 +648,7 @@ PixieDust Chart 选项
## PixieGateway 管理控制台
管理员控制台是管理资源并对它们进行故障排除的好工具。 您可以使用`/admin` URL 访问它。 请注意,您将需要使用您配置的用户/密码进行身份验证(请参阅 *PixieGateway 服务器配置*部分,以获取本章中有关如何配置用户/密码的说明;默认情况下,用户为`admin` 密码为<空白>)。
管理员控制台是管理资源并对它们进行故障排除的好工具。 您可以使用`/admin` URL 访问它。 请注意,您将需要使用您配置的用户/密码进行身份验证(请参阅 *PixieGateway 服务器配置*部分,以获取本章中有关如何配置用户/密码的说明;默认情况下,用户为`admin`密码为<空白>)。
管理控制台的用户界面由专注于特定任务的多个菜单组成。 让我们一一看一下:
......
......@@ -884,7 +884,7 @@ Batch: 2
+----------+---------------+---------------+---------+------------+-------------+
```
最后,我们使用 Parquet `output`接收器运行结构化查询,创建一个批处理 DataFrame,并使用 PixieDust `display()`浏览数据以显示例如按情感分类的 tweets 数(`positive`, `negative`,`neutral`)由实体聚类,如下图所示:
最后,我们使用 Parquet `output`接收器运行结构化查询,创建一个批处理 DataFrame,并使用 PixieDust `display()`浏览数据以显示例如按情感分类的 tweets 数(`positive`,`negative`,`neutral`)由实体聚类,如下图所示:
![Getting started with the IBM Watson Natural Language Understanding service](img/00154.jpeg)
......@@ -1155,7 +1155,7 @@ print("Number of tweets received: {}".format(streams_manager.twitter_stream.list
return True
```
另外,为避免闪烁,我们防止在`<div>`元素中使用`class="no_loading_msg"` 显示*加载微调器*图像。
另外,为避免闪烁,我们防止在`<div>`元素中使用`class="no_loading_msg"`显示*加载微调器*图像。
* We invoke three different routes (`display_metric1`, `display_metric2`, and `display_wc`) that are responsible for displaying the three widgets respectively.
......
......@@ -247,7 +247,7 @@ statsmodels.tsa.tests.test_stattools.TestACF_FFT
### 注意
**注意**:所有这些一元函数(仅带有一个参数的函数)都直接在 ndarray 级别上工作。 例如,我们可以使用 `np.square` 立即对数组中的所有值求平方:
**注意**:所有这些一元函数(仅带有一个参数的函数)都直接在 ndarray 级别上工作。 例如,我们可以使用`np.square`立即对数组中的所有值求平方:
代号: `np.square(np.arange(10))`
......@@ -1055,7 +1055,7 @@ $("[id^=slider][id$={{prefix}}]").each(function() {
[您可以在此处找到代码文件](https://github.com/DTAIEB/Thoughtful-Data-Science/blob/master/chapter%208/sampleCode19.py)
`MovingAverageSubApp`中,我们使用`add_ticker_selection_markup`装饰器并将`chart{{prefix}}`作为默认路由的参数,以添加股票选择器选项卡,并添加一个名为`lag_slider``<div>`元素,其中包含`<pd_event_handler>` 设置`self.lag`变量并刷新`chart` div。 `chart` div 将`pd_entity`属性与调用`rolling`方法的[`get_moving_average_df()`方法](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.rolling.html)一起使用,从选定的熊猫 DataFrame 返回滚动均值,并在其上调用`mean()`方法。 由于 PixieDust `display()`尚不支持 pandas 系列,因此我们将系列索引用作名为`x`的列来构建 pandas DataFrame,并以`get_moving_average_df()`方法返回它。
`MovingAverageSubApp`中,我们使用`add_ticker_selection_markup`装饰器并将`chart{{prefix}}`作为默认路由的参数,以添加股票选择器选项卡,并添加一个名为`lag_slider``<div>`元素,其中包含`<pd_event_handler>`设置`self.lag`变量并刷新`chart` div。 `chart` div 将`pd_entity`属性与调用`rolling`方法的[`get_moving_average_df()`方法](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.rolling.html)一起使用,从选定的熊猫 DataFrame 返回滚动均值,并在其上调用`mean()`方法。 由于 PixieDust `display()`尚不支持 pandas 系列,因此我们将系列索引用作名为`x`的列来构建 pandas DataFrame,并以`get_moving_average_df()`方法返回它。
以下代码显示了`MovingAverageSubApp`子 PixieApp 的实现
......@@ -1390,7 +1390,7 @@ PACF 用于日志差异 MSFT DataFrame
**注意**:在调用`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
......@@ -1607,7 +1607,7 @@ class ForecastArimaSubApp(BaseSubApp):
* 定义一个`setup`方法,该方法在 PixieApp 启动时一定会被调用。 在此方法中,我们将复制从父 PixieApp 获得的所选 DataFrame。 我们还维护一个名为`self.differencing`的变量,该变量跟踪用户是否单击了**添加差异**按钮。
* 我们创建一个默认的路线,该路线显示由以下组件组成的第一个屏幕:
* 标头带有两个按钮:`Add differencing`用于使时间序列固定,而`Continue to forecast` 显示第二个屏幕,我们将在后面讨论。 应用差分后,`Add differencing`按钮将切换为`Remove differencing`。
* 标头带有两个按钮:`Add differencing`用于使时间序列固定,而`Continue to forecast`显示第二个屏幕,我们将在后面讨论。 应用差分后,`Add differencing`按钮将切换为`Remove differencing`。
* 一个`<div>`元素,它调用`show_chart`路线以显示时间序列图。
* 一个`<div>`元素,它调用`show_acf`路由以显示 ACF 图。
* 调用`show_pacf`路由以显示 PACF 图表的`<div>`元素。
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册