机器学习四剑客:Numpy、Pandas、PIL、Matplotlib 完全指南

发布于:2025-06-12 ⋅ 阅读:(19) ⋅ 点赞:(0)

在机器学习领域,这四个Python库构成了数据处理和可视化的核心工具链。它们各司其职又紧密协作,形成了完整的数据处理流水线:

1. Numpy:科学计算基石

核心功能:多维数组操作与数值计算

import numpy as np

# 创建数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

# 数学运算
sines = np.sin(arr)  # 每个元素求正弦
matrix = arr @ arr.T  # 矩阵乘法

# 高级索引
sliced = arr[:, 1:3]  # 所有行的第1-2列

关键特性

  • 广播机制:自动扩展不同形状数组的运算
  • 矢量化操作:避免低效的Python循环
  • 内存优化:连续内存存储,高效访问

2. Pandas:数据分析神器

核心数据结构

  • Series:带标签的一维数组
  • DataFrame:二维表格型数据结构
import pandas as pd

# 创建DataFrame
data = {'姓名': ['张三', '李四'], '年龄': [25, 30], '城市': ['北京', '上海']}
df = pd.DataFrame(data)

# 数据操作
df['年薪'] = [150000, 180000]  # 添加新列
mean_age = df['年龄'].mean()  # 计算平均年龄
beijing_people = df[df['城市'] == '北京']  # 条件筛选

核心功能

  • 数据清洗:dropna()fillna()
  • 数据聚合:groupby()pivot_table()
  • 时间序列:resample()rolling()
  • 数据合并:merge()concat()

3. PIL/Pillow:图像处理专家

核心功能:图像加载、处理和转换

from PIL import Image

# 图像加载与处理
img = Image.open('photo.jpg')
gray_img = img.convert('L')  # 转灰度图
cropped = img.crop((100, 100, 400, 400))  # 裁剪
resized = img.resize((224, 224))  # 调整大小

# 图像增强
from PIL import ImageEnhance
enhancer = ImageEnhance.Contrast(img)
high_contrast = enhancer.enhance(2.0)  # 增加对比度

关键操作

  • 格式转换:save('output.png')
  • 通道分离:split()
  • 滤镜应用:filter()
  • 像素级操作:point()

4. Matplotlib:可视化引擎

核心功能:创建专业级图表

import matplotlib.pyplot as plt

# 创建图表
fig, axs = plt.subplots(2, 1, figsize=(10, 8))  # 2行1列的子图

# 折线图
axs[0].plot([1, 2, 3, 4], [1, 4, 2, 3], 'ro-')
axs[0].set_title('销售趋势')

# 直方图
axs[1].hist(np.random.randn(1000), bins=30, alpha=0.5)
axs[1].set_xlabel('数值分布')

# 图像显示
plt.imshow(np.array(img))
plt.colorbar()
plt.savefig('combined.png')

图表类型

  • 基础图表:折线图、柱状图、散点图
  • 统计图表:直方图、箱线图、热力图
  • 三维可视化:mplot3d 工具包
  • 交互式图表:结合widgets实现动态交互

四剑客协作实战:图像分类数据处理

import numpy as np
import pandas as pd
from PIL import Image
import matplotlib.pyplot as plt

# 1. 用Pandas读取标注数据
labels_df = pd.read_csv('image_labels.csv')

# 2. 用PIL加载并预处理图像
def preprocess_image(path):
    img = Image.open(path)
    img = img.resize((128, 128))
    return np.array(img) / 255.0

# 3. 创建图像数据集
image_data = np.array([preprocess_image(path) for path in labels_df['filepath']])

# 4. 数据可视化
fig, axes = plt.subplots(3, 3, figsize=(10, 10))
for i, ax in enumerate(axes.flat):
    ax.imshow(image_data[i])
    ax.set_title(labels_df.iloc[i]['label'])
    ax.axis('off')
plt.savefig('sample_images.png')

四剑客能力矩阵

核心能力 机器学习应用场景
Numpy 多维数组运算 特征工程、模型输入数据
Pandas 表格数据处理 数据清洗、特征提取
PIL 图像加载与预处理 计算机视觉数据准备
Matplotlib 数据可视化 结果分析、模型评估

高效使用技巧

  1. 内存优化

    # 使用Numpy内存视图避免复制
    large_array = np.ones((10000, 10000))
    view = large_array[100:200, 100:200]
    
  2. 向量化操作

    # 替代循环的向量化计算
    df['age_group'] = np.where(df['age'] < 30, 'Young', 
                              np.where(df['age'] < 50, 'Middle', 'Senior'))
    
  3. 批处理图像

    from torchvision.transforms import Compose, Resize, ToTensor
    transform = Compose([Resize((256, 256)), ToTensor()])
    
  4. 交互可视化

    %matplotlib widget  # Jupyter中启用交互模式
    plt.ion()  # 交互模式
    

现代替代方案

传统库 现代替代 优势
PIL OpenCV 更快的图像处理速度
Matplotlib Plotly/Seaborn 更美观的统计图表
Numpy CuPy GPU加速计算
Pandas Dask/Vaex 大数据集处理能力

掌握这四大核心库,你就拥有了解决90%机器学习数据问题的能力。它们构成了从数据加载、预处理、分析到可视化的完整工作流,是每位机器学习工程师必备的工具箱。