提交 9ab81275 编写于 作者: W wizardforcel

2021-02-23 21:47:55

上级 96bdc9a7
......@@ -10,7 +10,7 @@
第 2 课,“数据清理和高级机器学习”显示了如何在 Jupyter Notebook 中训练预测模型。 我们将讨论如何计划机器学习策略。 本课还说明了机器学习术语,例如监督学习,非监督学习,分类和回归。 我们将讨论使用 scikit-learn 和 pandas 预处理数据的方法。
第 3 课, “Web 抓取和交互式可视化”解释了如何剪贴网页表,然后使用交互式可视化来研究数据。 我们将首先研究 HTTP 请求的工作方式,重点是 GET 请求及其响应状态代码。 然后,我们将进入 Jupyter Notebook,并使用 Requests 库通过 Python 发出 HTTP 请求。 我们将看到 Jupyter 如何用于在笔记本中呈现 HTML 以及可以与之交互的实际网页。 发出请求后,我们将看到如何使用 Beautiful Soup 来解析 HTML 中的文本,并使用该库来刮擦表格数据。
第 3 课, “Web 抓取和交互式可视化”解释了如何剪贴网页表,然后使用交互式可视化来研究数据。 我们将首先研究 HTTP 请求的工作方式,重点是 GET 请求及其响应状态代码。 然后,我们将进入 Jupyter Notebook,并使用 Requests 库通过 Python 发出 HTTP 请求。 我们将看到 Jupyter 如何用于在笔记本中呈现 HTML 以及可以与之交互的实际网页。 发出请求后,我们将看到如何使用 BeautifulSoup 来解析 HTML 中的文本,并使用该库来刮擦表格数据。
# 这本书需要什么
......@@ -138,7 +138,7 @@ df = pd.concat((y, df), axis=1)
## 盗版
互联网上版权材料的盗版在所有媒体中都是一个持续存在的问题。 在 Packt,我们非常重视版权和许可的保护。 如果您在 Internet 上以任何形式发现我们的作品的任何非法副本,请立即向我们提供位置地址或网站名称,以便我们寻求补救。
互联网上版权材料的盗版在所有媒体中都是一个持续存在的问题。 在 Packt,我们非常重视版权和许可的保护。 如果您在互联网上以任何形式发现我们的作品的任何非法副本,请立即向我们提供位置地址或网站名称,以便我们寻求补救。
请通过`<[copyright@packtpub.com](mailto:copyright@packtpub.com)>`与我们联系,并提供指向可疑盗版材料的链接。
......
......@@ -25,7 +25,7 @@
## 子主题 A:HTTP 请求简介
超文本传输​​协议(简称 HTTP)是 Internet 数据通信的基础。 它定义了如何请求页面以及响应的外观。 例如,客户可以请求亚马逊的笔记本电脑页面出售,谷歌搜索本地餐馆或他们的 Facebook feed。 该请求连同 URL 一起将包含用户代理和 **请求标头**内容中的可用浏览 cookie。 用户代理告诉服务器客户端正在使用哪种浏览器和设备,通常用于提供最用户友好的网页响应版本。 也许他们最近已经登录到网页了; 此类信息将存储在 Cookie 中,该 Cookie 可用于自动登录用户。
超文本传输​​协议(简称 HTTP)是互联网数据通信的基础。 它定义了如何请求页面以及响应的外观。 例如,客户可以请求亚马逊的笔记本电脑页面出售,谷歌搜索本地餐馆或他们的 Facebook feed。 该请求连同 URL 一起将包含用户代理和 **请求标头**内容中的可用浏览 cookie。 用户代理告诉服务器客户端正在使用哪种浏览器和设备,通常用于提供最用户友好的网页响应版本。 也许他们最近已经登录到网页了; 此类信息将存储在 Cookie 中,该 Cookie 可用于自动登录用户。
借助 Web 浏览器,HTTP 请求和响应的这些详细信息已在后台处理。 对我们来说幸运的是,今天当使用高级语言(例如 Python)发出请求时,情况也是如此。 出于许多目的,可以很大程度上忽略请求标头的内容。 除非另有说明,否则在请求 URL 时会在 Python 中自动生成它们。 尽管如此,出于故障排除和理解我们的请求所产生的响应的目的,对 HTTP 有基本的了解还是很有用的。
......@@ -167,7 +167,7 @@ HTTP 方法
## 子主题 C:在 Jupyter Notebook 中解析 HTML
从网页上抓取数据时,发出请求后,我们必须从响应内容中提取数据。 如果内容是 HTML,则最简单的方法是使用高级解析库(例如 Beautiful Soup)。 这并不是说它是的唯一方法; 原则上,可以使用正则表达式或 Python 字符串方法(例如`split`)来选择数据,但是采用这些选项中的任何一个都会浪费时间,并且很容易导致错误。 因此,通常对此并不满意,建议使用可信赖的解析工具。
从网页上抓取数据时,发出请求后,我们必须从响应内容中提取数据。 如果内容是 HTML,则最简单的方法是使用高级解析库(例如 BeautifulSoup)。 这并不是说它是的唯一方法; 原则上,可以使用正则表达式或 Python 字符串方法(例如`split`)来选择数据,但是采用这些选项中的任何一个都会浪费时间,并且很容易导致错误。 因此,通常对此并不满意,建议使用可信赖的解析工具。
为了了解如何从 HTML 中提取内容,了解 HTML 的基础很重要。 首先,HTML 代表**超文本标记语言**。 类似于 Markdown 或 XML(**可扩展标记语言**),它只是一种用于标记文本的语言。 在 HTML 中,显示文本包含在 HTML 元素的内容部分中,其中元素属性指定该元素在页面上的显示方式。
......@@ -187,7 +187,7 @@ HTTP 方法
在页面上,我们看到的内容很少,只有一大堆国家/地区和它们的利率。 这是我们要抓取的表。
3. 返回 Jupyter 笔记本并将 HTML 作为 Beautiful Soup 对象加载,以便可以对其进行解析。 通过运行以下代码来执行此操作:
3. 返回 Jupyter 笔记本并将 HTML 作为 BeautifulSoup 对象加载,以便可以对其进行解析。 通过运行以下代码来执行此操作:
```py
from bs4 import BeautifulSoup
......@@ -196,7 +196,7 @@ HTTP 方法
我们使用 Python 的默认`html.parser`作为解析器,但是如果需要,可以使用`lxml`之类的第三方解析器。
通常,当使用类似 Beautiful Soup 这样的新对象时,最好通过执行`soup?`拉起 docstring。 但是,在这种情况下,文档字符串不是特别有用。 探索 Python 对象的另一个工具是`pdir`,它列出了对象的所有属性和方法(可以与`pip install pdir2`一起安装)。 它基本上是 Python 内置`dir`函数的格式化版本。
通常,当使用类似 BeautifulSoup 这样的新对象时,最好通过执行`soup?`拉起 docstring。 但是,在这种情况下,文档字符串不是特别有用。 探索 Python 对象的另一个工具是`pdir`,它列出了对象的所有属性和方法(可以与`pip install pdir2`一起安装)。 它基本上是 Python 内置`dir`函数的格式化版本。
4. 通过运行以下代码,显示 BeautifulSoup 对象的属性和方法。 无论是否安装了`pdir`外部库,它都将运行:
......@@ -518,7 +518,7 @@ HTTP 方法
f.write('{};{};{}\n'.format(*d))
```
总而言之,我们已经了解了 Jupyter 笔记本如何用于网络抓取。 我们通过学习 HTTP 方法和状态代码开始了本课程。 然后,我们使用 Requests 库使用 Python 实际执行 HTTP 请求,并了解了 Beautiful Soup 库如何用于解析 HTML 响应。
总而言之,我们已经了解了 Jupyter 笔记本如何用于网络抓取。 我们通过学习 HTTP 方法和状态代码开始了本课程。 然后,我们使用 Requests 库使用 Python 实际执行 HTTP 请求,并了解了 BeautifulSoup 库如何用于解析 HTML 响应。
事实证明,我们的 Jupyter 笔记本是进行此类工作的好工具。 我们能够浏览 Web 请求的结果,并尝试各种 HTML 解析技术。 我们还能够呈现 HTML 甚至在笔记本中加载网页的实时版本!
......@@ -1002,7 +1002,7 @@ Bokeh 是一个用于 Python 的交互式可视化库。 其目标是提供与 D
在本课程中,我们抓取了网页表,然后使用交互式可视化工具来研究数据。
我们首先查看 HTTP 请求的工作方式,重点关注 GET 请求及其响应状态代码。 然后,我们进入 Jupyter Notebook,并使用 Requests 库通过 Python 发出 HTTP 请求。 我们了解了如何使用 Jupyter 以及可与之交互的实际网页在笔记本中呈现 HTML。 发出请求后,我们看到了如何使用 Beautiful Soup 来解析 HTML 中的文本,并使用该库来刮擦表格数据。
我们首先查看 HTTP 请求的工作方式,重点关注 GET 请求及其响应状态代码。 然后,我们进入 Jupyter Notebook,并使用 Requests 库通过 Python 发出 HTTP 请求。 我们了解了如何使用 Jupyter 以及可与之交互的实际网页在笔记本中呈现 HTML。 发出请求后,我们看到了如何使用 BeautifulSoup 来解析 HTML 中的文本,并使用该库来刮擦表格数据。
抓取两个数据表后,我们将它们存储在 pandas DataFrames 中。 第一个表包含每个国家的中央银行利率,第二个表包含人口。 我们将它们组合到一个表中,然后用于创建交互式可视化。
......
......@@ -540,7 +540,7 @@ correlation (pageSpeeds, purchaseAmount)
![](img/b671a29a-545d-4ae6-9a91-6f3c80106b6f.png)
再次提醒您:相关性并不意味着因果关系。 仅仅因为人们在拥有更快的页面速度时可能会花更多钱,也许这意味着他们可以负担得起更好的 Internet 连接。 也许这并不意味着页面呈现的速度与人们的花费之间实际上存在因果关系,但是它告诉您存在一种有趣的关系,值得进一步研究。 如果不运行实验,就无法说出因果关系,但是相关性可以告诉您可能要运行的实验。
再次提醒您:相关性并不意味着因果关系。 仅仅因为人们在拥有更快的页面速度时可能会花更多钱,也许这意味着他们可以负担得起更好的互联网连接。 也许这并不意味着页面呈现的速度与人们的花费之间实际上存在因果关系,但是它告诉您存在一种有趣的关系,值得进一步研究。 如果不运行实验,就无法说出因果关系,但是相关性可以告诉您可能要运行的实验。
# 相关活动
......
......@@ -362,7 +362,7 @@ for result in results[:20]:
![](img/b4326ae3-6106-4c4d-8aff-af6acc33730a.png)
如果一个真正的人使用一个真正的浏览器来尝试获取此页面,它将说出诸如 Mozilla 或 Internet Explorer 或 Chrome 之类的内容。 因此,这些请求似乎来自某种刮板。 同样,潜在的恶意流量无法识别其身份。
如果一个真正的人使用一个真正的浏览器来尝试获取此页面,它将说出诸如 Mozilla 或互联网Explorer 或 Chrome 之类的内容。 因此,这些请求似乎来自某种刮板。 同样,潜在的恶意流量无法识别其身份。
# 修改三-检查用户代理
......
......@@ -853,7 +853,7 @@ spark-submit SparkKMeans.py
因此,首先让我们讨论 TF-IDF 的概念,以及如何使用它来解决搜索问题。 我们实际上要使用 TF-IDF 的方法是使用 MLlib 中的 Apache Spark 为 Wikipedia 创建一个基本的搜索引擎。 那有多棒? 让我们开始吧。
TF-IDF 代表术语频率和文档逆向频率,这基本上是两个指标,它们在进行搜索和弄清楚给定单词与文档的相关性(给定大量文档)时紧密相关。 因此,例如,对于 Wikipedia 上的每篇文章,可能都会有一个术语频率与之相关,对于该文档中出现的每个单词,Internet 上的每个页面都可能会与术语频率相关联。 听起来很花哨,但是,正如您将看到的,这是一个非常简单的概念。
TF-IDF 代表术语频率和文档逆向频率,这基本上是两个指标,它们在进行搜索和弄清楚给定单词与文档的相关性(给定大量文档)时紧密相关。 因此,例如,对于 Wikipedia 上的每篇文章,可能都会有一个术语频率与之相关,对于该文档中出现的每个单词,互联网上的每个页面都可能会与术语频率相关联。 听起来很花哨,但是,正如您将看到的,这是一个非常简单的概念。
* **所有词频**表示给定文档中给定单词出现的频率。 那么,在一个网页内,在一篇 Wikipedia 文章内,在任何内容内,给定单词在该文档中的普遍程度如何? 您知道,该单词在该文档中所有单词中的出现率是多少? 而已。 这就是所有术语的频率。
* **文档频率**是相同的想法,但是这次是该单词在整个文档库中的频率。 因此,这个词多久出现在我拥有的所有文档,所有网页,维基百科上的所有文章中,无论如何。 例如,“ a”或“ the”之类的常用词的文档出现频率很高,我希望它们的术语出现频率也很高,但这并不一定意味着它们与给定文档相关 。
......
......@@ -101,7 +101,7 @@ $ pig ./BigData/pig_sentiment.pig
## 盗版
互联网上的版权材料盗版是所有媒体上的一个持续存在的问题。 在 Packt,我们非常重视版权和许可的保护。 如果您在 Internet 上以任何形式发现我们的任何非法作品副本,请立即向我们提供位置地址或网站名称,以便我们寻求补救。
互联网上的版权材料盗版是所有媒体上的一个持续存在的问题。 在 Packt,我们非常重视版权和许可的保护。 如果您在互联网上以任何形式发现我们的任何非法作品副本,请立即向我们提供位置地址或网站名称,以便我们寻求补救。
请通过`<[copyright@packtpub.com](mailto:copyright@packtpub.com)>`与我们联系,并提供指向可疑盗版材料的链接。
......
......@@ -6,7 +6,7 @@
在过去的十年中,Python 编程语言征服了科学界,如今它已成为数据科学从业人员必不可少的工具,并且是每个有抱负的数据科学家必备的工具。 Python 将为您提供快速,可靠,跨平台且成熟的环境,用于数据分析,机器学习和算法问题解决。 通过我们简单,循序渐进,面向示例的方法,可以轻松克服以前阻止您掌握 Python 用于数据科学应用程序的一切,这将帮助您将最直接,最有效的 Python 工具应用于演示和现实世界 数据集。
作为 *Python 数据科学基础知识*的第三版,这本书提供了更新和扩展的内容。 基于最新的 Jupyter Notebook 和 JupyterLab 接口(结合了可互换的内核,一个真正的多语言数据科学系统),本书结合了 NumPy,`pandas`和 scikit-learn 的所有最新改进。 此外,它以新的 GBM 算法(XGBoost,LightGBM 和 CatBoost),深度学习(通过提供基于 TensorFlow 的 Keras 解决方案),精美的可视化效果(主要是由于 Seaborn)和 Web 部署(使用瓶子)的形式提供了新内容。 。
作为《Python 数据科学基础知识》的第三版,这本书提供了更新和扩展的内容。 基于最新的 Jupyter Notebook 和 JupyterLab 接口(结合了可互换的内核,一个真正的多语言数据科学系统),本书结合了 NumPy,`pandas`和 scikit-learn 的所有最新改进。 此外,它以新的 GBM 算法(XGBoost,LightGBM 和 CatBoost),深度学习(通过提供基于 TensorFlow 的 Keras 解决方案),精美的可视化效果(主要是由于 Seaborn)和 Web 部署(使用瓶子)的形式提供了新内容。 。
本书首先向您展示了如何使用单源方法在 Python 的最新版本(3.6)中设置基本的数据科学工具箱(这意味着该书的代码也可以在 Python 2.7 上轻松重用)。 然后,它将以某种方式指导您跨所有数据处理和预处理阶段,以解释与加载数据,转换和修复数据以进行分析以及探索/处理有关的所有核心数据科学活动。 最后,这本书将向您介绍主要的机器学习算法,图形分析技术以及所有可视化和部署工具,从而使向数据科学专家和业务用户的受众展示结果更加容易,从而完成其概述。
......@@ -16,23 +16,23 @@
# 本书涵盖的内容
第 1 章,*第一步*,介绍了 Jupyter Notebook,并演示了如何访问教程中运行的数据。
第 1 章,“第一步”,介绍了 Jupyter Notebook,并演示了如何访问教程中运行的数据。
第 2 章和 *Data Munging* 介绍了所有关键的数据操作和转换技术,重点介绍了进行谋杀活动的最佳实践。
第 2 章和“数据整理”介绍了所有关键的数据操作和转换技术,重点介绍了进行谋杀活动的最佳实践。
第 3 章和*数据管道*讨论了可能改善数据科学项目结果的所有操作,使读者能够进行高级数据操作。
第 3 章和“数据管道”讨论了可能改善数据科学项目结果的所有操作,使读者能够进行高级数据操作。
第 4 章,*机器学习*提出了 scikit-learn 库中可用的最重要的学习算法。 将向读者展示实际应用以及需要检查的重要内容以及为从每种学习技术中获得最佳效果而需要调整的参数。
第 4 章,“机器学习”提出了 scikit-learn 库中可用的最重要的学习算法。 将向读者展示实际应用以及需要检查的重要内容以及为从每种学习技术中获得最佳效果而需要调整的参数。
第 5 章,*可视化,见解和结果*为您提供基础和中级的图形表示形式,对于表示和视觉理解复杂的数据结构和从机器学习中获得的结果是必不可少的。
第 5 章,“可视化,见解和结果”为您提供基础和中级的图形表示形式,对于表示和视觉理解复杂的数据结构和从机器学习中获得的结果是必不可少的。
第 6 章和*社交网络分析*为读者提供了处理代表社会关系和互动的数据的实用有效技巧。
第 6 章和“社交网络分析”为读者提供了处理代表社会关系和互动的数据的实用有效技巧。
第 7 章和*超越基础的深度学习*演示了如何从头开始构建卷积神经网络,介绍了该行业的所有工具以增强您的深度学习模型,并说明了*转移学习*以及如何使用递归神经网络对文本进行分类和预测序列的工作。
第 7 章和“超越基础的深度学习”演示了如何从头开始构建卷积神经网络,介绍了该行业的所有工具以增强您的深度学习模型,并说明了*迁移学习*以及如何使用递归神经网络对文本进行分类和预测序列的工作。
第 8 章,*大数据火花*介绍了一种新的数据处理方式:水平扩展大数据。 这意味着运行已安装 Hadoop 和 Spark 框架的计算机集群。
第 8 章,“用于大数据的 Spark”介绍了一种新的数据处理方式:水平扩展大数据。 这意味着运行已安装 Hadoop 和 Spark 框架的计算机集群。
[附录](9.html)*增强 Python 基础*涵盖了一些 Python 示例和教程,这些示例和教程侧重于在数据科学项目上必不可少的关键语言功能。
附录和“增强 Python 基础”涵盖了一些 Python 示例和教程,这些示例和教程侧重于在数据科学项目上必不可少的关键语言功能。
# 充分利用这本书
......@@ -46,7 +46,7 @@
您还将需要以下内容:
* 装有 Windows,macOS 或 Linux 操作系统且至少有 8 GB 内存的计算机(如果您的计算机上只有 4 GB,则无论如何都可以使用大多数示例)
* 如果您想加快计算速度,可以在计算机上安装 GPU,您可以在第 7 章,*超越基础*的深度学习中找到。
* 如果您想加快计算速度,可以在计算机上安装 GPU,您可以在第 7 章,“超越基础的深度学习”中找到。
* Python 3.6 安装,最好通过 [Anaconda](https://www.anaconda.com/download/)
# 下载示例代码文件
......@@ -101,7 +101,7 @@ In: G.add_edge(3,4)
**勘误表**:尽管我们已尽一切努力确保内容的准确性,但还是会发生错误。 如果您在这本书中发现错误,请向我们报告,我们将不胜感激。 请访问[这个页面](http://www.packt.com/submit-errata),选择您的图书,点击勘误提交表格链接,然后输入详细信息。
**盗版**:如果您在 Internet 上以任何形式遇到我们的作品的任何非法副本,请向我们提供位置地址或网站名称,我们将不胜感激。 请通过`copyright@packt.com`与我们联系,并提供材料链接。
**盗版**:如果您在互联网上以任何形式遇到我们的作品的任何非法副本,请向我们提供位置地址或网站名称,我们将不胜感激。 请通过`copyright@packt.com`与我们联系,并提供材料链接。
**如果您有兴趣成为作家**:如果您有一个专业的话题并且对写作或撰写书籍感兴趣,请访问[这个页面](http://authors.packtpub.com/)]。
......
......@@ -18,7 +18,7 @@
数据科学是一个相对较新的知识领域,尽管计算机科学界已经对它的核心组件进行了多年的研究。 它的组件包括线性代数,统计建模,可视化,计算语言学,图形分析,机器学习,商业智能以及数据存储和检索。
数据科学是一个新领域,您必须考虑到当前,它的前沿仍然有些模糊和动态。 由于数据科学是由各种学科构成的,所以请记住,根据数据科学家的能力和专业领域的不同,它们的个人资料也会有所不同(例如,您可以阅读说明性的 *Harlan D Harris 在[这个页面](http://radar.oreilly.com/2013/06/theres-more-than-one-kind-of-data-scientist.html)上发表的数据科学家*文章,或深入讨论 有关 A 型或 B 型数据科学家以及其他有趣的分类法的信息,请访问[这个页面](https://stats.stackexchange.com/questions/195034/what-is-a-data-scientist))。
数据科学是一个新领域,您必须考虑到当前,它的前沿仍然有些模糊和动态。 由于数据科学是由各种学科构成的,所以请记住,根据数据科学家的能力和专业领域的不同,它们的个人资料也会有所不同(例如,您可以阅读 Harlan D Harris 在[这个页面](http://radar.oreilly.com/2013/06/theres-more-than-one-kind-of-data-scientist.html)上发表的《数据科学家》的说明性文章,或深入讨论 有关 A 型或 B 型数据科学家以及其他有趣的分类法的信息,请访问[这个页面](https://stats.stackexchange.com/questions/195034/what-is-a-data-scientist))。
在这种情况下,作为数据科学家,您可以学习并有效使用的最佳交易工具是什么? 我们相信最好的工具是 Python,并且我们打算为您提供快速入门所需的所有基本信息。
......@@ -77,7 +77,7 @@ $> pip install -U future
从未使用过 Python(可能未在计算机上轻松安装该语言)的新手数据科学家需要首先从项目的主要网站 [www.python.org/downloads/](https://www.python.org/downloads/) 下载安装程序 ],然后将其安装在其本地计算机上。
本节提供对可以在计算机上安装的内容的完全控制。 当您必须设置单台计算机来处理数据科学中的不同任务时,这非常有用。 无论如何,请注意逐步安装确实需要花费时间和精力。 相反,安装现成的科学发行版将减轻安装过程的负担,并且它可能会节省您的时间,有时甚至是麻烦,尽管它会放置大量程序包,但它可能非常适合第一次开始和学习。 不会一次全部在您的计算机上使用。 因此,如果要立即开始简单的安装过程,只需跳过此部分,然后继续进行下一节 *Scientific* *发行版*
本节提供对可以在计算机上安装的内容的完全控制。 当您必须设置单台计算机来处理数据科学中的不同任务时,这非常有用。 无论如何,请注意逐步安装确实需要花费时间和精力。 相反,安装现成的科学发行版将减轻安装过程的负担,并且它可能会节省您的时间,有时甚至是麻烦,尽管它会放置大量程序包,但它可能非常适合第一次开始和学习。 不会一次全部在您的计算机上使用。 因此,如果要立即开始简单的安装过程,只需跳过此部分,然后继续进行下一节“科学发行版”
这是一种多平台编程语言,您将找到在 Windows 或类 Unix 操作系统上运行的计算机的安装程序。
......@@ -483,7 +483,7 @@ import pandas as pd
# Scikit 学习
作为 **SciKits****SciPy Toolkits**)的一部分开始,Scikit-learn 是 Python 数据科学运算的核心。 它提供了数据预处理,有监督和无监督学习,模型选择,验证和错误度量方面可能需要的所有功能。 希望我们在本书中详细讨论这个软件包。 Scikit-learn 于 2007 年由 David Cournapeau 发起,是一个 Google Summer of Code 项目。 自 2013 年以来,它已由 **INRIA****国家信息和自动化研究所**,即法国计算机科学与自动化研究所)的研究人员接管:
作为 **SciKits****SciPy 工具包**)的一部分开始,Scikit-learn 是 Python 数据科学运算的核心。 它提供了数据预处理,有监督和无监督学习,模型选择,验证和错误度量方面可能需要的所有功能。 希望我们在本书中详细讨论这个软件包。 Scikit-learn 于 2007 年由 David Cournapeau 发起,是一个 Google Summer of Code 项目。 自 2013 年以来,它已由 **INRIA****国家信息和自动化研究所**,即法国计算机科学与自动化研究所)的研究人员接管:
* [**网站**](http://scikit-learn.org/stable)
* **打印时的版本**:0.19.1
......@@ -547,7 +547,7 @@ import seaborn as sns
# 美丽的汤
**Beautiful Soup** 是 Leonard Richardson 的作品,是一种从 HTML 和 XML 文件中提取数据的出色工具,这些文件是从 Internet 检索的。 即使在*标签汤*(因此得名)的情况下,它的效果也非常好,这些汤是畸形,矛盾和不正确标签的集合。 选择解析器(Python 标准库中包含的 HTML 解析器可以正常工作)之后,借助 Beautiful Soup,您可以浏览页面中的对象并提取文本,表格和其他可能有用的信息:
**BeautifulSoup** 是 Leonard Richardson 的作品,是一种从 HTML 和 XML 文件中提取数据的出色工具,这些文件是从互联网检索的。 即使在*标签的汤*(因此得名)的情况下,它的效果也非常好,这些汤是畸形,矛盾和不正确标签的集合。 选择解析器(Python 标准库中包含的 HTML 解析器可以正常工作)之后,借助 BeautifulSoup,您可以浏览页面中的对象并提取文本,表格和其他可能有用的信息:
* [**网站**](http://www.crummy.com/software/BeautifulSoup)
* **打印时的版本**:4.6.0
......@@ -557,7 +557,7 @@ import seaborn as sns
# 网络 X
**NetworkX** 由美国洛斯阿拉莫斯国家实验室开发,是专门用于创建,处理,分析和图形表示真实网络数据的程序包(它可以轻松地使用由一百万个节点组成的图形进行操作, 边缘)。 除了用于图形的专用数据结构和精细的可视化方法(2D 和 3D)之外,它还为用户提供了许多标准的图形度量和算法,例如最短路径,中心,组件,社区,聚类和 PageRank。 我们将在第 6 章和*社交网络分析*中主要使用此软件包:
**NetworkX** 由美国洛斯阿拉莫斯国家实验室开发,是专门用于创建,处理,分析和图形表示真实网络数据的程序包(它可以轻松地使用由一百万个节点组成的图形进行操作, 边缘)。 除了用于图形的专用数据结构和精细的可视化方法(2D 和 3D)之外,它还为用户提供了许多标准的图形度量和算法,例如最短路径,中心,组件,社区,聚类和 PageRank。 我们将在第 6 章和“社交网络分析”中主要使用此软件包:
* [**网站**](http://networkx.github.io/)
* **打印时的版本**:2.1
......@@ -885,9 +885,9 @@ In: print ("This is a test")
有关运行 IPython 内核时所有 Jupyter 功能的完整论述,请参阅以下 Packt Publishing 书籍:
* Cyrille Rossant 撰写的《 IPython 交互式计算和可视化食谱》,Packt Publishing,2014 年 9 月 25 日
* Cyrille Rossant 撰写的《IPython 交互式计算和可视化食谱》,Packt Publishing,2014 年 9 月 25 日
* *学习用于交互式计算和数据可视化的 IPython* ,Cyrille Rossant,Packt Publishing,2013 年 4 月 25 日
* 《学习用于交互式计算和数据可视化的 IPython》,Cyrille Rossant,Packt Publishing,2013 年 4 月 25 日
出于说明目的,只需考虑每个 Jupyter 指令块都有一个编号的输入语句和一个输出语句。 因此,至少在输出并非微不足道的情况下,您会发现本书的代码分为两个模块。 否则,仅期望输入部分:
......@@ -897,7 +897,7 @@ In: <the code you have to enter> Out: <the output you should get>
通常,您只需要在单元格中的`In:`之后键入代码并运行即可。 然后,您可以将您的输出与我们可以使用`Out:`提供的输出进行比较,然后将我们在测试代码时在计算机上实际获得的输出进行比较。
如果您正在使用`conda``env`环境,则可能会在 Jupyter 界面中找不到新的环境。 如果发生这种情况,只需从命令行发出`conda install ipykernel`并重新启动 Jupyter Notebook。 您的内核应出现在 **New** 按钮下的笔记本选项中。
如果您正在使用`conda``env`环境,则可能会在 Jupyter 界面中找不到新的环境。 如果发生这种情况,只需从命令行发出`conda install ipykernel`并重新启动 Jupyter Notebook。 您的内核应出现在**新建**按钮下的笔记本选项中。
# Jupyter 魔术命令
......@@ -1110,7 +1110,7 @@ In: def plot_scatter(X,Y,R=None):
![](img/e4c174c2-7be7-4fa6-b9ce-0251a6ed2c04.png)
在我们的示例中,随着`X`增加,`Y`减少。 但是,这不会以恒定的速率发生,因为变化率会一直升高到一定的`X`值,然后降低并变为恒定。 这是非线性的条件,我们可以使用回归模型将其进一步可视化。 该模型假设`X``Y`之间的关系是线性的,形式为 *y = a + bX* 。 根据特定标准估算其`a``b`参数。
在我们的示例中,随着`X`增加,`Y`减少。 但是,这不会以恒定的速率发生,因为变化率会一直升高到一定的`X`值,然后降低并变为恒定。 这是非线性的条件,我们可以使用回归模型将其进一步可视化。 该模型假设`X``Y`之间的关系是线性的,形式为`y = a + bX`。 根据特定标准估算其`a``b`参数。
在第四个单元格中,我们分散了此问题的输入和输出值:
......@@ -1181,11 +1181,11 @@ $> rodeo .
鉴于我们之前的介绍,我们将展示要在 Jupyter 控制台或 Notebook 上交互运行的代码。
所有提供的代码将在 Notebook 中提供,该笔记本可在 Packt 网站上找到(*前言*中指出)。 至于数据,我们将提供不同的数据集示例。
所有提供的代码将在 Notebook 中提供,该笔记本可在 Packt 网站上找到(“前言”中指出)。 至于数据,我们将提供不同的数据集示例。
# Scikit 学习玩具数据集
Scikit 学习玩具数据集模块嵌入在 Scikit 学习包中。 这样的数据集可以通过`import`命令轻松地直接加载到 Python 中,并且不需要从任何外部 Internet 资源库中下载任何内容。 这种数据集的一些示例是 Iris,Boston 和 Digits 数据集,以列举无数出版物和书籍中提到的主要数据集,以及一些用于分类和回归的其他经典数据集。
Scikit 学习玩具数据集模块嵌入在 Scikit 学习包中。 这样的数据集可以通过`import`命令轻松地直接加载到 Python 中,并且不需要从任何外部互联网资源库中下载任何内容。 这种数据集的一些示例是 Iris,Boston 和 Digits 数据集,以列举无数出版物和书籍中提到的主要数据集,以及一些用于分类和回归的其他经典数据集。
除了功能和目标变量外,它们还构造在类似于字典的对象中,它们提供了数据本身的完整描述和上下文信息。
......@@ -1225,7 +1225,7 @@ In: print (type(iris.data)) Out: <class 'numpy.ndarray'>
`Iris.data`提供名为`sepal length``sepal width``petal length``petal width`的变量的数值,它们以矩阵形式(150,4)排列,其中 150 是观察数,4 是 功能数量。 变量的顺序是`iris.feature_names`中显示的顺序。
`Iris.target`是整数的向量,其中每个数字代表一个不同的类(请参阅`target_names`的内容;每个类名称都与其索引号和 *setosa* 相关,该零元素是零元素 列表中的,在目标向量中表示为`0`
`Iris.target`是整数的向量,其中每个数字代表一个不同的类(请参阅`target_names`的内容;每个类名称都与其索引号和*山鸢尾*相关,该零元素是零元素 列表中的,在目标向量中表示为`0`
`Iris flower`数据集由现代统计分析之父之一的罗纳德·费舍尔(Ronald Fisher)于 1936 年首次使用,目的是通过一小部分可通过经验验证的示例(每个 150 个数据点)展示线性判别分析的功能 代表鸢尾花)。 这些示例被安排在树木平衡的物种类别中(每个类别由三分之一的示例组成),并提供了四个度量描述变量,这些变量在组合时能够分离类别。
......@@ -1258,7 +1258,7 @@ In: import pandas as pd
# MLdata.org 和其他开放源数据的公共存储库
我们将提供的第二种示例数据集可以直接从机器学习数据集存储库或 **LIBSVM** 数据网站下载。 与以前的数据集相反,在这种情况下,您将需要访问 Internet
我们将提供的第二种示例数据集可以直接从机器学习数据集存储库或 **LIBSVM** 数据网站下载。 与以前的数据集相反,在这种情况下,您将需要访问互联网
首先,`mldata.org`是机器学习数据集的公共存储库,由柏林工业大学托管,并由**模式分析,统计建模和计算学习****PASCAL**)支持。 网络由欧盟资助。 您可以从该存储库免费下载任何数据集并进行试验。
......@@ -1382,7 +1382,7 @@ In: iris_data = iris.values[:,:4]
作为最后的学习资源,Scikit-learn 软件包还提供了快速创建用于回归,二进制和多标签分类,聚类分析和降维的综合数据集的可能性。
重复合成数据的主要优点在于在您的 Python 控制台的工作内存中的瞬时创建。 因此,可以创建更大的数据示例,而不必进行从 Internet 进行长时间的下载会话(并且可以在磁盘上节省很多内容)。
重复合成数据的主要优点在于在您的 Python 控制台的工作内存中的瞬时创建。 因此,可以创建更大的数据示例,而不必进行从互联网进行长时间的下载会话(并且可以在磁盘上节省很多内容)。
例如,您可能需要处理涉及一百万个数据点的分类问题:
......@@ -1427,4 +1427,4 @@ In: %timeit X,y = datasets.make_classification(n_samples=10**6,
在本介绍性章节中,我们安装了本书中将使用的所有内容,从 Python 包到示例。 它们既可以直接安装也可以通过科学分发安装。 我们还介绍了 Jupyter Notebooks,并在教程中演示了如何访问运行的数据。
在下一章 *Data Munging* 中,我们将概述数据科学管道,并探索所有关键工具来处理和准备数据,然后再应用任何学习算法并设置假设实验时间表。
\ No newline at end of file
在下一章“数据整理”中,我们将概述数据科学管道,并探索所有关键工具来处理和准备数据,然后再应用任何学习算法并设置假设实验时间表。
\ No newline at end of file
......@@ -2,7 +2,7 @@
我们只是将数据付诸行动! 在本章中,您将学习如何处理数据。 数据处理是什么意思?
术语 **mung** 是大约半个世纪前由麻省理工学院(**MIT**)的学生创造的技术术语。 Munging 的意思是按照一系列明确规定的和可逆的步骤将原始数据更改为完全不同的(希望是更有用的)原始数据。 根深蒂固于黑客文化中,在数据科学流水线中通常使用其他几乎同义的术语(例如数据争用或数据准备)来描述谋杀
术语**整理**(Munging)是大约半个世纪前由麻省理工学院(**MIT**)的学生创造的技术术语。 整理的意思是按照一系列明确规定的和可逆的步骤将原始数据更改为完全不同的(希望是更有用的)原始数据。 根深蒂固于黑客文化中,在数据科学流水线中通常使用其他几乎同义的术语(例如数据争用或数据准备)来描述整理
在这种前提下,本章将讨论以下主题:
......@@ -20,7 +20,7 @@
该过程从获取数据开始(一个阶段,称为数据摄取)。 数据摄取意味着一系列可能的选择,从简单地上传数据到从 RDBMS 或 NoSQL 存储库组装数据,或者从综合生成数据到从 Web API 或 HTML 页面抓取数据。
特别是在面对新挑战时,上传数据可以证明自己是数据科学家工作的关键部分。 您的数据可以来自多种来源:数据库,CSV 或 Excel 文件,原始 HTML,图像,录音,API(如果您对 API 的含义一无所知,[则可以在此处阅读有关使用 Python 的 API 的很好的教程](https://www.dataquest.io/blog/python-api-tutorial/))提供 **JavaScript 对象符号(** **JSON)**文件,依此类推。 鉴于存在多种选择,我们将通过提供基本工具来简要介绍这一方面,方法是使用硬盘上存在的文本文件或将 Web 或**关系数据库管理系统****RDBMS**)中的表格。
特别是在面对新挑战时,上传数据可以证明自己是数据科学家工作的关键部分。 您的数据可以来自多种来源:数据库,CSV 或 Excel 文件,原始 HTML,图像,录音,API(如果您对 API 的含义一无所知,[则可以在此处阅读有关使用 Python 的 API 的很好的教程](https://www.dataquest.io/blog/python-api-tutorial/))提供 **JavaScript 对象表示法****JSON**文件,依此类推。 鉴于存在多种选择,我们将通过提供基本工具来简要介绍这一方面,方法是使用硬盘上存在的文本文件或将 Web 或**关系数据库管理系统****RDBMS**)中的表格。
成功上传数据后,进入数据整理阶段。 尽管现在已经可以在内存中使用,但您的数据肯定会以不适合任何分析和实验的形式出现。 现实世界中的数据非常复杂,混乱,有时甚至是错误或丢失。 但是,由于有了一系列基本的 Python 数据结构和命令,您将解决所有有问题的数据,并将其输入到项目的下一个阶段,并适当地转换为一个典型的数据集,该数据集的行和列的变量均具有观察值。 数据集是任何统计和机器学习分析的基本要求,您可能会听到它被提及为平面文件(当它是将数据库中多个关系表连接在一起的结果时)或数据矩阵(当列和行为 未标记,并且其中包含的值只是数字)。
......@@ -34,7 +34,7 @@
项目的结果由错误或优化措施(为了表示业务目标而精心选择)表示。 除了错误度量之外,您的成就还可以通过可解释的见解来传达,该见解必须以口头或视觉方式描述给数据科学项目的发起者或其他数据科学家。 在这一点上,使用表格,图表和图表适当地可视化结果和见解确实是必不可少的。
也可以使用首字母缩写词 **OSEMN****获取****Scrub****Explore****Model****iNterpret**),由 Hilary Mason 和 Chris Wiggins 在博客 [*dataists*](http://www.dataists.com/2010/09/a-taxonomy-of-data-science/),描述了数据科学分类法。 OSEMN 也很令人难忘,因为它与*负鼠**这两个词*押韵:
也可以使用首字母缩写词 **OSEMN****获取****清理****探索****建模****解释**),由 Hilary Mason 和 Chris Wiggins 在博客 [*dataists*](http://www.dataists.com/2010/09/a-taxonomy-of-data-science/),描述了数据科学分类法。 OSEMN 也很令人难忘,因为它与`possum``awesome`押韵:
![](img/043ff19e-e531-479e-98a9-f36e4ebc9510.png)
......@@ -360,7 +360,7 @@ In: import numpy as np
['4.7' '3.2' '1.3' '0.2' 'Iris-setosa']]
```
这样的功能可以为随机梯度下降学习提供基本功能,如第 4 章,*机器学习*中所述,我们将回到这段代码并进行扩展 通过引入一些更高级的示例,此示例。
这样的功能可以为随机梯度下降学习提供基本功能,如第 4 章,“机器学习”中所述,我们将回到这段代码并进行扩展 通过引入一些更高级的示例,此示例。
# 访问其他数据格式
......@@ -739,7 +739,7 @@ In: dataset = pd.read_csv('a_selection_example_1.csv', index_col=0)
在这里,数据集已加载且索引正确。 现在,要访问单元格的值,我们可以做一些事情。 让我们一一列出:
1. 首先,您可以简单地指定感兴趣的列和行(通过使用其索引)。
2. 要提取第五行的`val3`(索引为 *n = 104* ),可以给出以下命令:
2. 要提取第五行的`val3`(索引为`n = 104`),可以给出以下命令:
```py
In: dataset['val3'][104] Out: 'A'
......@@ -1063,9 +1063,9 @@ In: from sklearn.feature_extraction.text import HashingVectorizer
不幸的是,了解网站是非常艰苦的工作,因为每个网站都是由不同的人来构建和维护的,它们具有不同的基础结构,位置,语言和结构。 它们之间唯一的共同方面是由标准公开语言表示,大多数时候,它是**超文本标记语言****HTML**)。
这就是为什么到目前为止,大多数 Web 爬虫都只能以通用方式理解和浏览 HTML 页面的原因。 最常用的 Web 解析器之一被称为 Beautiful Soup。 它是用 Python 编写的,是开源的,非常稳定且易于使用。 而且,它能够检测 HTML 页面中的错误和格式错误的代码段(始终记住,网页通常是人为产品,容易出错)。
这就是为什么到目前为止,大多数 Web 爬虫都只能以通用方式理解和浏览 HTML 页面的原因。 最常用的 Web 解析器之一被称为 BeautifulSoup。 它是用 Python 编写的,是开源的,非常稳定且易于使用。 而且,它能够检测 HTML 页面中的错误和格式错误的代码段(始终记住,网页通常是人为产品,容易出错)。
对《美丽汤》的完整描述将需要整本书。 在这里,我们只会看到一些。 首先,Beautiful Soup 不是爬虫。 为了下载网页,我们可以(例如)使用`urllib`库:
对《美丽汤》的完整描述将需要整本书。 在这里,我们只会看到一些。 首先,BeautifulSoup 不是爬虫。 为了下载网页,我们可以(例如)使用`urllib`库:
1. 让我们在 Wikipedia 上下载 William Shakespeare 页面背后的代码:
......@@ -1074,7 +1074,7 @@ In: import urllib.request
url = 'https://en.wikipedia.org/wiki/William_Shakespeare' request = urllib.request.Request(url) response = urllib.request.urlopen(request)
```
2. 现在是时候指示 Beautiful Soup 读取资源并使用 HTML 解析器对其进行解析了:
2. 现在是时候指示 BeautifulSoup 读取资源并使用 HTML 解析器对其进行解析了:
```py
In: from bs4 import BeautifulSoup
......@@ -1161,7 +1161,7 @@ Python 列表数据结构实际上更麻烦,更慢,它是将列表结构链
无论 NumPy 数组的尺寸如何,数据始终将按连续的值序列(连续的内存块)进行排列。 正是对数组大小和步幅(告诉我们必须在内存中跳过多少字节才能沿着某个轴移至下一个位置)的跨度知识,才能轻松正确地表示和操作数组。
为了快速实现内存优化,为了存储多维数组,严格地有两种方法称为**行优先级****列优先级**。 由于 **RAM****随机存取存储器**)被安排在存储单元的线性存储中(存储单元作为一条线的点是连续的– RAM 中没有像数组这样的东西 ),您必须将阵列展平为向量并将其存储在内存中。 展平时,您可以在 NumPy 软件包中逐行(主要顺序)执行 C / C ++的典型操作,或者逐列(主要顺序执行)的 Fortran 或 R.Python 的典型操作。 在实现中,使用主要行排序(也称为 C 连续,而主要列排序也称为 Fortran 连续),这意味着在逐行应用的计算操作中,它比逐列工作更快。 无论如何,在创建 NumPy 数组时,您可以根据对行或列进行更多操作的期望来确定数据结构的顺序。 导入软件包`import numpy as np`后,给定数组`a = [[1,2,3],[4,5,6],[7,8,9]]`,您可以按行优先顺序`c = np.array(a, order='C')`或按列优先顺序`f = np.array(a, order='F')`重新定义它
为了快速实现内存优化,为了存储多维数组,严格地有两种方法称为**行优先****列优先**。 由于 **RAM****随机存取存储器**)被安排在存储单元的线性存储中(存储单元作为一条线的点是连续的– RAM 中没有像数组这样的东西 ),您必须将阵列展平为向量并将其存储在内存中。 展平时,您可以在 NumPy 软件包中逐行(主要顺序)执行 C/C++ 的典型操作,或者逐列(主要顺序执行)的 Fortran 或 R.Python 的典型操作。 在实现中,使用主要行排序(也称为 C 连续,而主要列排序也称为 Fortran 连续),这意味着在逐行应用的计算操作中,它比逐列工作更快。 无论如何,在创建 NumPy 数组时,您可以根据对行或列进行更多操作的期望来确定数据结构的顺序。 导入软件包`import numpy as np`后,给定数组`a = [[1,2,3],[4,5,6],[7,8,9]]`,您可以按行优先顺序`c = np.array(a, order='C')`或按列优先顺序`f = np.array(a, order='F')`重新定义它
相反,代表多个维度的数据结构列表只能将自己变成嵌套列表,从而增加访问数据时的开销和内存碎片。
......@@ -1242,12 +1242,12 @@ In: Array_1 = np.array(list_of_ints, dtype= 'int8')
| `int` | 4 | 默认整数类型(通常为`int32``int64`) |
| `int8` | 1 | 字节(-128 至 127) |
| `int16` | 2 | 整数(-32768 至 32767) |
| `int32` | 4 | 整数(-2 ** 31 至 2 ** 31-1) |
| `int64` | 8 | 整数(-2 ** 63 至 2 ** 63-1) |
| `int32` | 4 | 整数(`-2 ** 31``2 ** 31-1`) |
| `int64` | 8 | 整数(`-2 ** 63``2 ** 63-1`) |
| `uint8` | 1 | 无符号整数(0 到 255) |
| `uint16` | 2 | 无符号整数(0 到 65535) |
| `uint32` | 4 | 无符号整数(0 到 2 ** 32-1) |
| `uint64` | 8 | 无符号整数(0 到 2 ** 64-1) |
| `uint32` | 4 | 无符号整数(0 到`2 ** 32-1`) |
| `uint64` | 8 | 无符号整数(0 到`2 ** 64-1`) |
| `float_` | 8 | `float64`的简写 |
| `float16` | 2 | 半精度浮点数(指数 5 位,尾数 10 位) |
| `float32` | 4 | 单精度浮点数(指数 8 位,尾数 23 位) |
......@@ -1295,7 +1295,7 @@ In: # Check if a NumPy array is of the desired numeric type
print (isinstance(Array_2[0],np.number)) Out: False
```
在我们的数据处理过程中,无意中发现了一个字符串类型的数组作为输出,这意味着我们忘记了在前面的步骤中将所有变量都转换为数字变量。 例如,当所有数据都存储在 pandas DataFrame 中时。 在上一节中,*与* *类别* *和* *文本* *数据*一起使用 **一些简单明了的方式来处理这种情况。**
在我们的数据处理过程中,无意中发现了一个字符串类型的数组作为输出,这意味着我们忘记了在前面的步骤中将所有变量都转换为数字变量。 例如,当所有数据都存储在 pandas DataFrame 中时。 在上一节中,“处理类别和文本数据”,我们提供了一些简单明了的方式来处理这种情况。**
在此之前,让我们完成对如何从列表对象派生数组的概述。 如前所述,列表中对象的类型也影响数组的维数。
......@@ -1514,7 +1514,7 @@ In: import pandas as pd
housing = pd.read_csv(housing_filename, header=None)
```
*异构* *列表*部分中所演示的,此时`.values`方法将提取一个类型数组,该数组容纳 DataFrame 中存在的所有不同类型:
“异构列表”部分中所演示的,此时`.values`方法将提取一个类型数组,该数组容纳 DataFrame 中存在的所有不同类型:
```py
In: housing_array = housing.values
......@@ -1541,7 +1541,7 @@ In: housing.dtypes Out: 0 float64
dtype: object
```
在使用 DataFrame 上的`.dtypes`方法提取 NumPy 数组之前询问 DataFrame 对象使用的类型,可以使您预期所得数组的`dtype`。 因此,它允许您在继续操作之前决定是要转换还是更改 DataFrame 对象中的变量类型(请*类别* *和* *文本* *数据*本章)。
在使用 DataFrame 上的`.dtypes`方法提取 NumPy 数组之前询问 DataFrame 对象使用的类型,可以使您预期所得数组的`dtype`。 因此,它允许您在继续操作之前决定是要转换还是更改 DataFrame 对象中的变量类型(请参考本章“处理类别和文本数据”)。
# NumPy 快速运算和计算
......@@ -1658,9 +1658,9 @@ NumPy 还提供了一个对象类矩阵,它实际上是`ndarray`的子类,
除了以类似于 MATLAB 的方式进行操作带来的便利之外,它们没有提供任何其他优势。 您可能会有脚本混乱的风险,因为您必须为矩阵对象和数组处理不同的产品表示法。
从 Python 3.5 开始,Python 中引入了一个新的运算符@(at)运算符,专门用于矩阵乘法(更改适用于 Python 中的所有软件包,而不仅仅是 NumPy)。 引入此新运算符会带来很多好处。
首先,不会再有*运算符用于矩阵乘法的情况了。 *运算符将仅用于按元素的操作(在具有相同维的两个矩阵(或向量)的情况下,您将操作应用于两个矩阵中具有相同位置的元素之间的运算)。
然后,表示公式的代码将具有更高的可读性,因此变得更易于阅读和解释。 您将不再需要一起评估运算符(+-/ *)和方法(.dot),只需评估运算符(+-/ * @)。
您可以了解有关此介绍的更多信息(这只是形式上的-使用`.dot`方法可与@运算符一起使用之前可以应用的所有内容),并通过阅读 **Python** 查看一些应用示例。 **增强提案****PEP465**[在 Python 基金会网站上](https://www.python.org/dev/peps/pep-0465/)
首先,不会再有`*`运算符用于矩阵乘法的情况了。 `*`运算符将仅用于按元素的操作(在具有相同维的两个矩阵(或向量)的情况下,您将操作应用于两个矩阵中具有相同位置的元素之间的运算)。
然后,表示公式的代码将具有更高的可读性,因此变得更易于阅读和解释。 您将不再需要一起评估运算符(`+ - / *`)和方法(`.`),只需评估运算符(`+ - / * @`)。
您可以了解有关此介绍的更多信息(这只是形式上的-使用`.dot`方法可与@运算符一起使用之前可以应用的所有内容),并通过阅读 **Python** 查看一些应用示例。 [Python 基金会网站上的**增强提案**(**PEP465**)](https://www.python.org/dev/peps/pep-0465/)
# 使用 NumPy 数组进行切片和索引
......@@ -1913,14 +1913,14 @@ In: print(sparse_coo) Out: (0, 1) 1.0
从输出表示中,我们可以得出一个稀疏坐标格式矩阵的工作原理是将打印值存储在三个单独的存储数组中:一个用于`x`坐标,一个用于`y`坐标,以及 一个值。 这意味着在插入信息时,COO 矩阵的确非常快(每个新元素是每个存储阵列中的新行),但是处理起来缓慢,因为它无法立即找出行或列中的值以进行扫描 数组。
对于列表(**lil**)矩阵中的(**dok**)键和**列表的**字典也是如此。 第一个使用坐标字典操作(因此它可以快速检索单个元素),第二个使用两个列表,两个列表排列成代表行,在行中包含非零坐标,其他两个值(很容易 通过添加更多行进行扩展)。
COO 矩阵的另一个优点是,它们可以立即转换为专门用于在行或列级别有效工作的其他类型的矩阵:csr 和 csc 矩阵。****
对于键字典(DOK)和列表的列表(LIL)也是如此。 第一个使用坐标字典操作(因此它可以快速检索单个元素),第二个使用两个列表,两个列表被排列来代表行,包含该行中的非零坐标以及其他值(很容易 通过添加更多行进行扩展)。
COO 矩阵的另一个优点是,它们可以立即转换为专门用于在行或列级别有效工作的其他类型的矩阵:CSR 和 CSC 矩阵。
**压缩的稀疏行****csr**)和**压缩的稀疏列****csc**)是创建稀疏矩阵后最常用的格式 他们。 他们使用的索引系统更支持对 csr 的行和对 csc 的列进行计算。 但是,这使得编辑的计算量很大(因此,创建它们后更改它们并不方便)。
**压缩的稀疏行****CSR**)和**压缩的稀疏列****CSC**)是创建稀疏矩阵后最常用的格式 他们。 他们使用的索引系统更支持对 CSR 的行和对 CSC 的列进行计算。 但是,这使得编辑的计算量很大(因此,创建它们后更改它们并不方便)。
The performances of csr and csc really depend on the algorithm used and how it optimizes its parameters. You have to actually try them out on your algorithm to find out which performs best.
CSR 和 CSC 的性能实际上取决于所使用的算法及其优化参数的方式。 您必须实际对算法进行试验,以找出效果最佳的算法。
最后,对角线格式矩阵是专用于对角线矩阵和块稀疏行格式矩阵的稀疏数据结构。 除了基于整个数据块的数据存储方式外,这些特性在本质上类似于 csr 矩阵。
最后,对角线格式矩阵是专用于对角线矩阵和块稀疏行格式矩阵的稀疏数据结构。 除了基于整个数据块的数据存储方式外,这些特性在本质上类似于 CSR 矩阵。
# 概括
......
此差异已折叠。
......@@ -32,7 +32,7 @@
* UCI 机器学习存储库( [archive.ics.uci.edu/ml/datasets.html](http://archive.ics.uci.edu/ml/datasets.html)
* LIBSVM 数据集(由台湾大学林志仁提供)
为了让您拥有这样的数据集,而不必每次都要测试示例时都不必依赖 Internet 连接,建议您下载它们并将其存储在硬盘上。 因此,我们准备了一些脚本来自动下载数据集,这些脚本将精确地放置在您使用 Python 的目录中,从而使数据访问更加容易:
为了让您拥有这样的数据集,而不必每次都要测试示例时都不必依赖互联网连接,建议您下载它们并将其存储在硬盘上。 因此,我们准备了一些脚本来自动下载数据集,这些脚本将精确地放置在您使用 Python 的目录中,从而使数据访问更加容易:
```py
In: import pickle
......@@ -87,7 +87,7 @@ In: from sklearn.datasets import load_boston
boston.target, test_size=0.2, random_state=0)
```
现在已加载数据集,并已创建训练/测试对。 在接下来的几个步骤中,我们将训练回归变量并将其拟合到训练集中,并预测测试数据集中的目标变量。 然后,我们将使用 MAE 分数来衡量回归任务的准确性(如第 3 章,*数据管道*中所述)。 至于评分函数,我们决定了平均绝对误差,以与误差本身的大小成正比地惩罚误差(使用更常见的均方误差会更多地强调较大的误差,因为误差是平方的):
现在已加载数据集,并已创建训练/测试对。 在接下来的几个步骤中,我们将训练回归变量并将其拟合到训练集中,并预测测试数据集中的目标变量。 然后,我们将使用 MAE 分数来衡量回归任务的准确性(如第 3 章,“数据管道”中所述)。 至于评分函数,我们决定了平均绝对误差,以与误差本身的大小成正比地惩罚误差(使用更常见的均方误差会更多地强调较大的误差,因为误差是平方的):
```py
In: from sklearn.linear_model import LinearRegression
......@@ -106,7 +106,7 @@ In: %timeit regr.fit(X_train, y_train) Out: 544 µs ± 37.4 µs per loop
(mean ± std. dev. of 7 runs, 1000 loops each)
```
那真的很快! 结果当然不是那么好(如果您在本书前面的第 1 章和*第一步*)。 但是,线性回归在性能与训练速度和简单性之间提供了很好的权衡。 现在,让我们看一下该算法的内幕。 为什么这么快却不那么准确? 答案在某种程度上是可以预期的-这是因为它是一种非常简单的线性方法。
那真的很快! 结果当然不是那么好(如果您在本书前面的第 1 章和“第一步”)。 但是,线性回归在性能与训练速度和简单性之间提供了很好的权衡。 现在,让我们看一下该算法的内幕。 为什么这么快却不那么准确? 答案在某种程度上是可以预期的-这是因为它是一种非常简单的线性方法。
让我们简要地对此技术进行数学解释。 让我们将 *X(i)*命名为*第*个样本(实际上是具有数字特征的行向量),并将 *Y(i)*作为目标。 线性回归的目标是找到一个良好的权重(列)向量`W`,该向量最适合于与观察向量相乘时近似目标值,即 *X(i)* WɈY(i)*(请注意,这是点积)。`W`应该相同,并且对每个观察结果都是最佳的。 因此,解决以下等式变得容易:
......@@ -1398,7 +1398,7 @@ In: from sklearn.feature_extraction import text
# 完整的数据科学示例–文本分类
现在,这是一个完整的示例,可让您将每个文本放在正确的类别中。 我们将使用`20newsgroup`数据集,该数据集已在第 1 章,*第一步*中引入。 为了使事情更真实,并防止分类器过度拟合数据,我们将删除电子邮件标头,页脚(例如签名)和引号。 另外,在这种情况下,目标是在两个相似的类别之间进行分类:`sci.med``sci.space`。 我们将使用准确性度量来评估分类:
现在,这是一个完整的示例,可让您将每个文本放在正确的类别中。 我们将使用`20newsgroup`数据集,该数据集已在第 1 章,“第一步”中引入。 为了使事情更真实,并防止分类器过度拟合数据,我们将删除电子邮件标头,页脚(例如签名)和引号。 另外,在这种情况下,目标是在两个相似的类别之间进行分类:`sci.med``sci.space`。 我们将使用准确性度量来评估分类:
```py
In: import nltk
......
......@@ -7,7 +7,7 @@
* 使用`matplotlib`程序包中的基本`pyplot`功能
* 利用 pandas DataFrame 进行**探索性数据分析****EDA**
* 与 Seaborn 一起创建漂亮的交互式图表
* 可视化我们在第 3 章,*数据管道*和第 4 章,*机器学习*中讨论的
* 可视化我们在第 3 章,“数据管道”和第 4 章,“机器学习”中讨论的
的机器学习和优化过程
* 了解并以视觉方式传达变量的重要性及其与目标结果的关系
* 设置使用 HTTP 接受并提供预测作为服务的预测服务器
......@@ -850,7 +850,7 @@ In: from sklearn.learning_curve import validation_curve
# 随机森林功能的重要性
正如在第 3 章,*数据管道*的结论中所讨论的那样,选择正确的变量可以通过减少噪声,估计方差和过多计算负担来改善学习过程 。 集成方法(例如,RandomForest)可以为您提供与数据集中其他变量一起使用时变量所扮演角色的不同视图。
正如在第 3 章,“数据管道”的结论中所讨论的那样,选择正确的变量可以通过减少噪声,估计方差和过多计算负担来改善学习过程 。 集成方法(例如,RandomForest)可以为您提供与数据集中其他变量一起使用时变量所扮演角色的不同视图。
在这里,我们向您展示如何提取 RandomForest 和 Extra-Tree 模型的重要性。 重要性的计算方式最初由 Breiman,Friedman 等人在《分类和回归树》一书中描述。 1984 年。这是一个真正的经典,为分类树奠定了坚实的基础。 在本书中,重要性用*基尼重要性**平均减少* *杂质*来描述,这是由于特定变量平均超过 合奏中的所有树木。 换句话说,平均减少杂质是在该变量上分割的节点的总错误减少乘以路由到每个节点的样本数。 值得注意的是,根据这种重要性计算方法,减少错误不仅取决于误差度量-基尼或熵用于分类,而 MSE 用于回归,而且树顶的拆分也被认为更重要,因为它们涉及处理更多问题。 例子。
......
# 社交网络分析
**社交网络分析**(通常称为 **SNA**)创建模型并研究以网络形式存在的一组社交实体的关系。 实体可以是人,计算机或网页,关系可以是喜欢,链接或友谊(即,实体之间的连接)。
*“社交网络分析”*(通常称为 **SNA**)创建模型并研究以网络形式存在的一组社交实体的关系。 实体可以是人,计算机或网页,关系可以是喜欢,链接或友谊(即,实体之间的连接)。
在本章中,您将了解以下内容:
......@@ -504,4 +504,4 @@ In: my_sampled_social_network = nx.Graph()
在本章中,我们学习了社交网络是什么,包括社交网络的创建和修改,表示以及社交网络及其节点的一些重要度量。 最后,我们讨论了大图的加载和保存以及处理方法。
在本章中,几乎所有基本数据科学算法都已介绍。 在第 4 章,*机器学习*中讨论了机器学习技术,并在此讨论了社交网络分析方法。 我们将在下一章*超越基础的深度学习*中最终讨论深度学习和神经网络的最先进,最前沿的技术。
\ No newline at end of file
在本章中,几乎所有基本数据科学算法都已介绍。 在第 4 章,“机器学习”中讨论了机器学习技术,并在此讨论了社交网络分析方法。 我们将在下一章“超越基础的深度学习”中最终讨论深度学习和神经网络的最先进,最前沿的技术。
\ No newline at end of file
......@@ -6,7 +6,7 @@
* 如何优化深网
* 速度/复杂性/准确性问题
* 如何使用 CNN 对图像进行分类
* 如何使用预训练的网络进行分类和移学习
* 如何使用预训练的网络进行分类和移学习
* 如何使用 LSTM 对序列进行操作
我们将使用 [Keras 软件包](https://keras.io/),这是用于深度学习的高级 API,它将使用于深度学习的神经网络更加容易和易于理解,因为它 其特点是类似于 Lego 的方法(这里的积木是神经网络的组成元素)。
......@@ -400,7 +400,7 @@ Out:
在本节中,我们将快速展示如何使用预训练的模型,这是一种常见的处理方法。 请记住,预训练模型可以在多种情况下使用:
* 特征增强,以将特征(在这种情况下为预测标签)以及观察向量添加到模型中
* 移学习,以将更多特征(来自一层或模型层的系数)以及观察向量添加到模型中
* 移学习,以将更多特征(来自一层或模型层的系数)以及观察向量添加到模型中
* 预言; 也就是说,计算标签
现在让我们看看如何使用预先训练的网络来实现我们的目的。
......@@ -486,7 +486,7 @@ Out: Predicted: [('n02704792', 'amphibian', 0.20315942),
正如预期的那样,由于它不在其预定义的类别之内,因此网络无法识别第一个预测标签中的盆景。
实际上,可以通过所谓的**移学习技术**来训练预训练的模型甚至识别全新的课程。 这项技术不在本书的讨论范围之内,[但是您可以从 Keras 的博客中的示例中了解它](https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html)
实际上,可以通过所谓的**移学习技术**来训练预训练的模型甚至识别全新的课程。 这项技术不在本书的讨论范围之内,[但是您可以从 Keras 的博客中的示例中了解它](https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html)
最后,让我们看看如何从中间层提取要素,如下所示:
......
......@@ -34,7 +34,7 @@
当前的计算机,甚至是最新,最昂贵的计算机,其磁盘,内存和 CPU 的数量也有限。 每天处理太字节(PB)的信息并及时生成模型似乎非常困难。 此外,需要复制同时包含数据和处理软件的独立服务器。 否则,它可能成为系统的单点故障。
因此,大数据世界已经转移到了集群:它们由可变数量的*并不十分昂贵的*节点组成,并且位于高速 Internet 连接上。 通常,有些集群专用于存储数据(大硬盘,少 CPU 和少量内存),而另一些专用于处理数据(功能强大的 CPU,中等到大量内存,以及 小硬盘)。 此外,如果正确设置了群集,则可以确保可靠性(没有单点故障)和高可用性。
因此,大数据世界已经转移到了集群:它们由可变数量的*并不十分昂贵的*节点组成,并且位于高速互联网连接上。 通常,有些集群专用于存储数据(大硬盘,少 CPU 和少量内存),而另一些专用于处理数据(功能强大的 CPU,中等到大量内存,以及 小硬盘)。 此外,如果正确设置了群集,则可以确保可靠性(没有单点故障)和高可用性。
# 理解为什么我们需要分布式框架
......@@ -126,7 +126,7 @@ Spark 使用的数据模型名为**弹性分布式数据集**(**RDD**),它
但是,为了测试本章的内容,实际上您不需要进行太复杂的安装。 通过使用 [Docker](https://www.docker.com/),您可以在自己计算机上的 Linux 服务器上访问 Spark 的安装以及 Jupyter 笔记本和 PySpark。 不论是 Linux,macOS 还是基于 Windows 的计算机都没有关系。
实际上,这主要是因为 Docker。 Docker 允许操作系统级别的虚拟化,也称为**容器化**。 容器化意味着允许一台计算机运行多个隔离的文件系统实例,其中每个实例彼此之间只是简单地分开(尽管共享相同的硬件资源),就好像它们是单台计算机本身一样。 基本上,在 Docker 中运行的任何软件都包装在一个完整,稳定且预先定义的文件系统中,该文件系统完全独立于运行 Docker 的文件系统。 使用 Docker 容器意味着您的代码将按预期(如本章所述)完美运行。 命令执行的一致性是 Docker 是将解决方案投入生产的最佳方法的主要原因:您只需要将使用的容器移到服务器中,并创建一个 API 即可访问您的解决方案(我们之前在[这个页面](5.html)*可视化,见解和结果*,我们在其中介绍了 Bottle 包装。
实际上,这主要是因为 Docker。 Docker 允许操作系统级别的虚拟化,也称为**容器化**。 容器化意味着允许一台计算机运行多个隔离的文件系统实例,其中每个实例彼此之间只是简单地分开(尽管共享相同的硬件资源),就好像它们是单台计算机本身一样。 基本上,在 Docker 中运行的任何软件都包装在一个完整,稳定且预先定义的文件系统中,该文件系统完全独立于运行 Docker 的文件系统。 使用 Docker 容器意味着您的代码将按预期(如本章所述)完美运行。 命令执行的一致性是 Docker 是将解决方案投入生产的最佳方法的主要原因:您只需要将使用的容器移到服务器中,并创建一个 API 即可访问您的解决方案(我们之前在[这个页面](5.html)“可视化,见解和结果”,我们在其中介绍了 Bottle 包装。
这是您需要采取的步骤:
......
......@@ -206,7 +206,7 @@ jupyter notebook --generate-config
**勘误表**:尽管我们已尽一切努力确保内容的准确性,但还是会发生错误。 如果您在本书中发现错误,请向我们报告,我们将不胜感激。 请访问[这个页面](http://www.packtpub.com/submit-errata),选择您的书籍,点击**勘误提交表格**链接,然后输入详细信息。
**盗版**:如果您在 Internet 上以任何形式遇到我们的作品的任何非法副本,请向我们提供位置地址或网站名称,我们将不胜感激。 请通过`<[copyright@packtpub.com](mailto:copyright@packtpub.com)>`与我们联系,并提供材料链接。
**盗版**:如果您在互联网上以任何形式遇到我们的作品的任何非法副本,请向我们提供位置地址或网站名称,我们将不胜感激。 请通过`<[copyright@packtpub.com](mailto:copyright@packtpub.com)>`与我们联系,并提供材料链接。
**如果您有兴趣成为作者**:如果您有某个专业领域的知识,并且有兴趣撰写或撰写书籍,请访问[这个页面](http://authors.packtpub.com)
......
......@@ -11,7 +11,7 @@
# 什么是机器学习?
我认为一个很好的定义可以很好地抓住机器学习背后的直觉,[这是斯坦福大学兼职教授 Andrew Ng 在 Coursera 的*机器学习*课程中](https://www.coursera.org/learn/machine-learning)
我认为一个很好的定义可以很好地抓住机器学习背后的直觉,[这是斯坦福大学兼职教授 Andrew Ng 在 Coursera 的“机器学习”课程中](https://www.coursera.org/learn/machine-learning)
> 机器学习是一门无需明确编程即可让计算机学习的科学。
......
......@@ -62,7 +62,7 @@ Drew 的数据科学 Conway Venn 图现在包括开发人员
* [Statsmodels 文档](https://www.statsmodels.org/stable/index.html)
* [NetworkX](https://networkx.github.io/documentation/networkx-2.1/index.html)
* [GeoJSON 规范](http://geojson.org/)
* [*Beautiful Soup 文档*](https://www.crummy.com/software/BeautifulSoup/bs4/doc)
* [*BeautifulSoup 文档*](https://www.crummy.com/software/BeautifulSoup/bs4/doc)
# 附录 A.PixieApp 快速参考
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册