jk's notes
  • 通过 Jupyter 开启数据科学之路

通过 Jupyter 开启数据科学之路

4.1 简介

Python 有大量的第三方库, 已形成生态. Jupyter 是一个交互式工具, 易于使用与展示.

4.1.1 NumPy(np)

NumPy, Numerical Python, 是科学计算的基础包. 提供矩阵, 向量的计算功能.

NumPy 的核心对象是 ndarray. 它封装了基于 Python 原生数据类型的 n 维数组. 其计算非常的简洁. 例如矩阵计算只需要: c = a + b 即可.

使用步骤:

  1. 导入 numpy, 一般会命名为 np.
  2. 使用 np.array() 创建矩阵对象. 将数组视为行向量, 有行向量组成矩阵.
  3. 使用 <a>.ndim 获得矩阵的秩, 又称为维度, 轴数.
  4. 使用 <a>.shape 获得矩阵的形状, 例如 (4,3) 表示 4 行 3 列.
  5. 使用 <a>.size 获得元素个数.
  6. 使用 np.arange() 获得一维数组, 再使用 reshape(r, c) 方法生成矩阵.
  7. 使用 <a>.T 获得转置.

基本上都与线性代数中的运算相对应.

NumPy 的基本运算都是将各个分量上的元素进行两两运算. 如果要进行矩阵乘法, 使用: a @ b.

4.1.2 Pandas(pd)

Pandas 主要用于数据处理与分析. 基本可以理解为表格计算的工具集, 处理关系运算的工具 (猜测).

Pandas 提供两个重要的数据结构: Series 和 DataFrame

  • Series 是以为标签化同类型数组.
  • DataFrame 是二维标签化表格型数据结构.

使用:

  1. 导入模块 (先导入 numpy), 一般命名为 pd
  2. pd.DataFrame({ 'dept': [ ... ], 'qty': [ ... ] }) 初始化
  3. 可以当做集合, 访问分量. 例如: df['dept'], df['qty'].
  4. 可以使用 df['列名'].str.lower() 对数据批量处理.
  5. 可以使用聚合函数: df['列'].sum()
  6. 可以使用 groupby('列') 对结果进行分组 (逻辑上与 SQL 一样).

索引也是从 0 开始的.

4.1.3 Matplotlib(plt)

一个可视化包, 以简单的方式将数据绘制成图. 它是一个 Python2D 的绘图库.

基于 pandas 的数据绘制折线图

import numpy as py
import pandas as pd
df = dp.DataFrame(...)
import matplotlib.pyplot as plt
df.plot()

即可绘制出折线图.

若要绘制正弦曲线

x = np.linspace(0,10)
y = np.sin(x)
plt.plot(x, t)

基于 Matplotlib 还有更为强大的 seborn.

4.1.4 SciPy

SciPy, Scientific Python. 它是基于 NumPy 的用于科学计算的函数集合包. 是基于 Fortran 进行的封装.

SciPy 的常用模块有:

  • scipy.constants: 物理常量和数学常量.
  • scipy.fftpack: 快速傅里叶变换.
  • scipy.integrate: 积分.
  • scipy.interpolate: 插值.
  • scipy.linalg: 线性代数.
  • scipy.ndimage: n 维图像包.
  • scipy.signal: 信号处理.
  • scipy.spatial: 空间数据结构.
  • scipy.stats: 统计.

然后书中给出了利用样本点生成三次插值函数的案例

import numpy as np
import matplotlib.pyplot as plt
from scipy import interpolate

# 在 0 到 10 中生成 8 个等距的点 (优点是不用计算不长/间隔)
x = np.linspace(0, 10, 8)
y = np.sin(x)

# 生成一个三次插值函数
func = interpolate.interp1d(x, y, kind='cubic')

# 使用新函数来生成绘制用的点
x_interp = np.linspace(0, 10, 100)
y_interp = func(x_interp)

# 绘图
plt.figure()
plt.plot(x, y, 'o')
plt.plot(x_interp, y_interp)
plt.show()

4.2 了解机器学习

简要介绍 scikit-learn. 基于 Scipy 开发出了很多工具包, 统称为 Scikit. 其中 scikit-learn 是用于机器学习的.

它提供六大类工具:

  • 数据预处理, data preprocessing. 主要是数据特征提取.
  • 分类, classification. 为数据划分类别.
  • 回归, regression. 预测给定数据相关的连续值.
  • 聚类, clustering. 主要是识别具有相似特征的对象.
  • 数据降维, data dimensionality reduction. 主要是减少无关数据, 减少需要处理的数据.
  • 模型选择, model selection. 目的为了提高精度.

具体细节不多整理.

然后给出了一个鸢尾花数据集的案例, 加以说明. 这里略.

然后列举了其他工具 (因为 scikit-learn 对深度学习支持有限, 并对图形处理器支持不好). 该领域更新太快, 略去.

Last Updated:
Contributors: jk