Jupyter NotebookNumPy-n维数组SciPy-稀疏矩阵matplotlib-科学绘图库pandas-处理分析数据
Jupyter NotebookNumPy-n维数组Jupyter Notebook是可以在浏览器中运行代码的交互环境。这个工具在探索性数据分析方面非常有用,在数据科学家中广为使用。虽然Jupyter Notebook支持多种编程语言,但我们只需要支持Python即可。用Jupyter Notebook整合代码、文本和图像非常方便,实际上本书所有内容都是以Jupyter Notebook的形式进行编写的。所有代码示例都可以在GitHub下载(https://github.com/amueller/introduction_to_ml_with_python)。
NumPy是Python科学计算的基础包之一。它的功能包括多维数组、高级数学函数(比如线性代数运算和傅里叶变换),以及伪随机数生成器。
在scikit-learn中,NumPy数组是基本数据结构。scikit-learn接受NumPy数组格式的数据。你用到的所有数据都必须转换成NumPy数组。NumPy的核心功能是ndarray类,即多维(n维)数组。数组的所有元素必须是同一类型。NumPy数组如下所示:
In[2]:
import numpy as np
x = np.array([[1, 2, 3], [4, 5, 6]])
print("x:n{}".format(x))
Out[2]:
x:
[[1 2 3]
[4 5 6]]
SciPy-稀疏矩阵
SciPy是Python中用于科学计算的函数集合。它具有线性代数高级程序、数学函数优化、信号处理、特殊数学函数和统计分布等多项功能。scikit-learn利用SciPy中的函数集合来实现算法。对我们来说,SciPy中最重要的是scipy.sparse:它可以给出稀疏矩阵(sparse matrice),稀疏矩阵是scikit-learn中数据的另一种表示方法。如果想保存一个大部分元素都是0的二维数组,就可以使用稀疏矩阵:
In[3]:
import numpy as np
from scipy import sparse
eye = np.eye(4)
print("NumPy array:n{}".format(eye))
Out[3]:
NumPy array:
[[1. 0. 0. 0.]
[0. 1. 0. 0.]
[0. 0. 1. 0.]
[0. 0. 0. 1.]]
In[4]
sparse_matrix = sparse.csr_matrix(eye)
print("nScipy sparse CSR matrix:n{}".format(sparse_matrix))
Out[4]
Scipy sparse CSR matrix:
(0, 0) 1.0
(1, 1) 1.0
(2, 2) 1.0
(3, 3) 1.0
通常来说,创建稀疏数据的稠密表示(dense representation)是不可能的(因为太浪费内存),所以我们需要直接创建其稀疏表示(sparserepresentation)。下面给出的是创建同一稀疏矩阵的方法,用的是COO格式:
In[5]
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))
Out[5]
COO representation:
(0, 0) 1.0
(1, 1) 1.0
(2, 2) 1.0
(3, 3) 1.0
关于SciPy稀疏矩阵的更多内容可查阅SciPy讲稿。
matplotlib-科学绘图库matplotlib是Python主要的科学绘图库,其功能为生成可发布的可视化内容,如折线图、直方图、散点图等。将数据及各种分析可视化,可以让你产生深刻的理解,而我们将用matplotlib完成所有的可视化内容。在Jupyter Notebook中,你可以使用%matplotlib notebook和%matplotlib inline命令,将图像直接显示在浏览器中。我们推荐使用%matplotlib notebook命令,它可以提供交互环境。举个例子,下列代码会生成图1-1中的图像:
# %matplotlib inline # 如果在pycharm里运行这里会报错,注释掉,在代码末尾加plt.show()就行 import matplotlib.pyplot as plt import numpy as np x = np.linspace(-10, 10, 100) #在-10和10之间生成数列,共100个数 y = np.sin(x) # 用正弦函数创建第二个数组 plt.plot(x, y, marker="x") # 绘制一个数组关于另一个数组的折线图 plt.show()pandas-处理分析数据
pandas是用于处理和分析数据的Python库。它基于一种叫作Dataframe的数据结构,这种数据结构模仿了R语言中的Dataframe。简单来说,一个pandasDataframe是一张表格,类似于Excel表格。pandas中包含大量用于修改表格和操作表格的方法,尤其是可以像SQL一样对表格进行查询和连接。NumPy要求数组中的所有元素类型必须完全相同,而pandas不是这样,每一列数据的类型可以互不相同(比如整型、日期、浮点数和字符串)。pandas的另一个强大之处在于,它可以从许多文件格式和数据库中提取数据,如SQL、Excel文件和逗号分隔值(CSV)文件。
import pandas as pd
from IPython.display import display
data = {
'Name': ["John", "Anna", "Peter", "Linda"],
'Location': ["NewYork", "Paris", "Berlin", "London"],
'Age': [24, 13, 53, 33]
}
data_pandas = pd.Dataframe(data)
display(data_pandas)
这个表格也可以用于查询
display(data_pandas[data_pandas.Age > 30])



