赵走x博客
网站访问量:151432
首页
书籍
软件
工具
古诗词
搜索
登录
Python机器学习基础教程:3、第一个应用:鸢尾花分类
Python机器学习基础教程:2、必要的库和工具
Python机器学习基础教程:1、引言
Python机器学习基础教程:2、必要的库和工具
资源编号:75698
人工智能
Python机器学习基础教程
热度:113
了解 scikit-learn 及其用法是很重要的,但还有其他一些库也可以改善你的编程体验。 scikit-learn 是基于 NumPy 和 SciPy 科学计算库的。除了 NumPy 和 SciPy,我们还会用到 pandas 和 matplotlib 。我们还会介绍 Jupyter Notebook,一个基于浏览器的交互编程环境。简单来说,对于这些工具,你应该了解以下内容,以便充分利用 scikit-learn 。
>上一篇文章:[Python机器学习基础教程:1、引言](http://www.handsomemark.com/articles/2019/07/27/1564158364523.html) >下一篇文章:[Python机器学习基础教程:3、第一个应用:鸢尾花分类](http://www.handsomemark.com/articles/2019/08/02/1564731192576.html) 了解 scikit-learn 及其用法是很重要的,但还有其他一些库也可以改善你的编程体验。 scikit-learn 是基于 NumPy 和 SciPy 科学计算库的。除了 NumPy 和 SciPy,我们还会用到 pandas 和 matplotlib 。我们还会介绍 Jupyter Notebook,一个基于浏览器的交互编程环境。简单来说,对于这些工具,你应该了解以下内容,以便充分利用 scikit-learn 。1 > 1 你如果不熟悉 NumPy 或 matplotlib ,我们推荐阅读 SciPy 讲稿([http://www.scipy-lectures.org/](http://www.scipy-lectures.org/) )的第 1 章。 # 1.4.1 Jupyter Notebook Jupyter Notebook 是可以在浏览器中运行代码的交互环境。这个工具在探索性数据分析方面非常有用,在数据科学家中广为使用。虽然 Jupyter Notebook 支持多种编程语言,但我们只需要支持 Python 即可。用 Jupyter Notebook 整合代码、文本和图像非常方便,实际上本书所有内容都是以 Jupyter Notebook 的形式进行编写的。所有代码示例都可以在 GitHub 下载([https://github.com/amueller/introduction_to_ml_with_python](https://github.com/amueller/introduction_to_ml_with_python) )。 # 1.4.2 NumPy NumPy 是 Python 科学计算的基础包之一。它的功能包括多维数组、高级数学函数(比如线性代数运算和傅里叶变换),以及伪随机数生成器。 在 scikit-learn 中,NumPy 数组是基本数据结构。scikit-learn 接受 NumPy 数组格式的数据。你用到的所有数据都必须转换成 NumPy 数组。NumPy 的核心功能是 ndarray 类,即多维(n 维)数组。数组的所有元素必须是同一类型。NumPy 数组如下所示: ``` import numpy as np x = np.array([[1, 2, 3], [4, 5, 6]]) print("x:\n{}".format(x)) ``` 输出: ``` x: [[1 2 3] [4 5 6]] ``` 本书会经常用到 NumPy。对于 NumPy ndarray 类的对象,我们将其简称为“NumPy 数组”或“数组”。 # 1.4.3 SciPy SciPy 是 Python 中用于科学计算的函数集合。它具有线性代数高级程序、数学函数优化、信号处理、特殊数学函数和统计分布等多项功能。scikit-learn 利用 SciPy 中的函数集合来实现算法。对我们来说,SciPy 中最重要的是 scipy.sparse :它可以给出稀疏矩阵 (sparse matrice),稀疏矩阵是 scikit-learn 中数据的另一种表示方法。如果想保存一个大部分元素都是 0 的二维数组,就可以使用稀疏矩阵: ``` from scipy import sparse # 创建一个二维NumPy数组,对角线为1,其余都为0 eye = np.eye(4) print("NumPy array:\n{}".format(eye)) ``` 输出 ``` NumPy array: [[ 1. 0. 0. 0.] [ 0. 1. 0. 0.] [ 0. 0. 1. 0.] [ 0. 0. 0. 1.]] ``` ``` # 将NumPy数组转换为CSR格式的SciPy稀疏矩阵 # 只保存非零元素 sparse_matrix = sparse.csr_matrix(eye) print("\nSciPy sparse CSR matrix:\n{}".format(sparse_matrix)) ``` 输出 ``` SciPy sparse CSR matrix: (0, 0) 1.0 (1, 1) 1.0 (2, 2) 1.0 (3, 3) 1.0 ``` 通常来说,创建稀疏数据的稠密表示(dense representation)是不可能的(因为太浪费内存),所以我们需要直接创建其稀疏表示(sparse representation)。下面给出的是创建同一稀疏矩阵的方法,用的是 COO 格式: ``` data = np.ones(4) row_indices = np.arange(4) col_indices = np.arange(4) eye_coo = sparse.coo_matrix((data, (row_indices, col_indices))) print("COO representation:\n{}".format(eye_coo)) ``` 输出 ``` COO representation: (0, 0) 1.0 (1, 1) 1.0 (2, 2) 1.0 (3, 3) 1.0 ``` 关于 SciPy 稀疏矩阵的更多内容可查阅 SciPy 讲稿([http://www.scipy-lectures.org/](http://www.scipy-lectures.org/) )。 # 1.4.4 matplotlib matplotlib 是 Python 主要的科学绘图库,其功能为生成可发布的可视化内容,如折线图、直方图、散点图等。将数据及各种分析可视化,可以让你产生深刻的理解,而我们将用 matplotlib 完成所有的可视化内容。在 Jupyter Notebook 中,你可以使用 %matplotlib notebook 和 %matplotlib inline 命令,将图像直接显示在浏览器中。我们推荐使用 %matplotlib notebook 命令,它可以提供交互环境。举个例子,下列代码会生成图 1-1 中的图像: ``` import matplotlib.pyplot as plt # 在-10和10之间生成一个数列,共100个数 x = np.linspace(-10, 10, 100) # 用正弦函数创建第二个数组 y = np.sin(x) # plot函数绘制一个数组关于另一个数组的折线图 plt.plot(x, y, marker="x") plt.show() ```  图 1-1:用 matplotlib 画出正弦函数的简单折线图 # 1.4.5 pandas pandas 是用于处理和分析数据的 Python 库。它基于一种叫作 DataFrame 的数据结构,这种数据结构模仿了 R 语言中的 DataFrame 。简单来说,一个 pandas DataFrame 是一张表格,类似于 Excel 表格。pandas 中包含大量用于修改表格和操作表格的方法,尤其是可以像 SQL 一样对表格进行查询和连接。NumPy 要求数组中的所有元素类型必须完全相同,而 pandas 不是这样,每一列数据的类型可以互不相同(比如整型、日期、浮点数和字符串)。pandas 的另一个强大之处在于,它可以从许多文件格式和数据库中提取数据,如 SQL、Excel 文件和逗号分隔值(CSV)文件。pandas 的详细功能介绍已经超出了本书的范围。但 Wes McKinney 的《Python 数据处理》2 一书是很好的参考指南。下面是利用字典创建 DataFrame 的一个小例子: ``` import pandas as pd from IPython.display import display # 创建关于人的简单数据集 data={'Name':["John","Anna","Peter","Linda"], 'Location':["New York","Paris","Berlin","London"], 'Age':[24,13,53,33] } data_pandas=pd.DataFrame(data) # IPython.display可以在Jupyter Notebook中打印出“美观的”DataFrame display(data_pandas) ``` 上述代码的输出如下: ``` Name Location Age 0 John New York 24 1 Anna Paris 13 2 Peter Berlin 53 3 Linda London 33 ``` 查询这个表格的方法有很多种。举个例子: ``` # 选择年龄大于30的所有行 display(data_pandas[data_pandas.Age>30]) ``` 输出结果如下: ``` Name Location Age 2 Peter Berlin 53 3 Linda London 33 ``` # 1.4.6 mglearn 本书的附加代码可以在 GitHub 下载([https://github.com/amueller/introduction_to_ml_with_python](https://github.com/amueller/introduction_to_ml_with_python) )。附加代码不仅包括本书中的所有示例,还包括 mglearn 库。这是我们为本书编写的实用函数库,以免将代码清单与绘图和数据加载的细节混在一起。感兴趣的话,你可以查看仓库中的所有函数,但 mglearn 模块的细节并不是本书的重点。如果你在代码中看到了对 mglearn 的调用,通常是用来快速美化绘图,或者用于获取一些有趣的数据。 > 本书会频繁使用 NumPy、matplotlib 和 pandas 。所有代码都默认导入了这些库: > > import numpy as np > import matplotlib.pyplot as plt > import pandas as pd > import mglearn 我们还假设你在 Jupyter Notebook 中运行代码,并使用 %matplotlib notebook 或 %matplotlib inline 魔法命令来显示图像。如果你没有使用 Jupyter Notebook 或这些魔法命令,那么就需要调用 plt.show 来显示图像。 >上一篇文章:[Python机器学习基础教程:1、引言](http://www.handsomemark.com/articles/2019/07/27/1564158364523.html) >下一篇文章:[Python机器学习基础教程:3、第一个应用:鸢尾花分类](http://www.handsomemark.com/articles/2019/08/02/1564731192576.html)