每日python库:数据分析处理与科学计算(14)

Python库的多样性使得它们可以在不同的应用场景中发挥作用,不同场景下同一个库可能拥有不同的功能,本系列未来会有不同的分类,可能会出现相同的库。数量很多,慢慢整理。文中的示例都是最基础的用法,有些就顺手写了,有些就丢给Ai,看个乐就行。

1. Cairo – 2D 图形处理

功能: Cairo 是一个用于创建 2D 图形的库,支持多种输出格式,如 PNG、PDF、SVG 等。

使用场景:

  • 绘制 2D 图形和图表。
  • 创建矢量图形。
  • 生成动画。

示例:

import cairo

# 创建一个表面
surface = cairo.ImageSurface(cairo.FORMAT_ARGB32, 200, 200)

# 创建一个上下文
ctx = cairo.Context(surface)

# 设置背景色
ctx.set_source_rgb(1, 1, 1) # 白色
ctx.paint()

# 绘制一个红色圆圈
ctx.set_source_rgb(1, 0, 0) # 红色
ctx.arc(100, 100, 50, 0, 2 * 3.14159)
ctx.fill()

# 保存图像
surface.write_to_png("red_circle.png")

2. pyGEL – 三维几何操作

功能: pyGEL 是 Geometry Engine Library 的 Python 接口,提供三维几何处理的工具。

使用场景:

  • 三维模型的创建和操作。
  • 几何计算和网格处理。
  • 计算机图形学中的几何应用。

示例:

from pygel import *

# 创建一个球体
sphere = Sphere(1.0, [0, 0, 0])

# 平移球体
sphere.translate([1, 1, 1])

# 打印球体的中心点
print(sphere.center())

3. ELI5 – 模型解释工具

功能: ELI5 是一个用于解释机器学习模型预测的库,支持多种模型和解释方法。

使用场景:

  • 理解机器学习模型的决策过程。
  • 模型调试和改进。
  • 向非技术人员解释模型。

示例:

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from eli5 import explain_prediction

# 加载数据
iris = load_iris()
X, y = iris.data, iris.target

# 训练模型
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X, y)

# 解释某一预测
explanation = explain_prediction(clf, X[0])
print(explanation)

4. SHAP – 模型解释

功能: SHAP (SHapley Additive exPlanations) 提供了一种基于合作博弈理论的模型解释方法。

使用场景:

  • 理解特征对模型预测的影响。
  • 模型的全局和局部解释。
  • 模型的公平性和透明度分析。

示例:

import shap
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# 加载数据并分割
X, y = shap.datasets.iris()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练模型
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 使用 SHAP 解释模型
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X_test)

# 绘制 SHAP 值图
shap.summary_plot(shap_values, X_test, plot_type="bar")

5. lime – 局部模型解释

功能: LIME (Local Interpretable Model-agnostic Explanations) 提供一种局部解释方法,适用于任何模型。

使用场景:

  • 对单个预测进行解释。
  • 理解复杂模型的局部行为。
  • 模型的可解释性研究。

示例:

from lime.lime_tabular import LimeTabularExplainer
from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier

# 加载数据
iris = load_iris()
X, y = iris.data, iris.target

# 训练模型
clf = RandomForestClassifier(n_estimators=100, random_state=42)
clf.fit(X, y)

# 创建解释器
explainer = LimeTabularExplainer(X, feature_names=iris.feature_names, class_names=iris.target_names, discretize_continuous=True)

# 解释某一预测
exp = explainer.explain_instance(X[0], clf.predict_proba, num_features=4)
print(exp.as_list())

6. Yellowbrick – 机器学习可视化

功能: Yellowbrick 提供了一系列用于机器学习的可视化工具,帮助理解模型和数据。

使用场景:

  • 数据探索和特征分析。
  • 模型评估和诊断。
  • 可视化学习曲线和特征重要性。

示例:

from yellowbrick.classifier import ClassificationReport
from sklearn.datasets import load_iris
from sklearn.svm import SVC

# 加载数据
iris = load_iris()
X, y = iris.data, iris.target

# 训练模型
model = SVC(random_state=42)
model.fit(X, y)

# 创建分类报告可视化
visualizer = ClassificationReport(model, classes=iris.target_names)
visualizer.fit(X, y) # Fit the training data to the visualizer
visualizer.score(X, y) # Evaluate the model on the test data
visualizer.show() # Finalize and render the figure

7. mlflow – 机器学习工作流管理

功能: MLflow 是一个开源平台,用于管理机器学习生命周期,包括实验跟踪、项目管理和模型部署。

使用场景:

  • 机器学习实验的跟踪和管理。
  • 模型的版本控制和部署。
  • 协作开发和复现性。

示例:

import mlflow
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# 加载数据并分割
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 启动一个 MLflow 实验
with mlflow.start_run():
# 训练模型
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 记录参数
mlflow.log_param("n_estimators", 100)

# 记录指标
mlflow.log_metric("accuracy", model.score(X_test, y_test))

# 保存模型
mlflow.sklearn.log_model(model, "model")

8. Neptune.ai – 机器学习实验管理

功能: Neptune.ai 是一个云端解决方案,用于跟踪、存储和管理机器学习实验。

使用场景:

  • 实验的可视化和管理。
  • 团队协作和分享实验结果。
  • 长期存储和版本控制实验数据。

示例:

import neptune
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# 初始化 Neptune
neptune.init(api_token="YOUR_API_TOKEN", project_qualified_name="USER_NAME/PROJECT_NAME")

# 创建一个实验
neptune.create_experiment(name="RF Iris Classification")

# 加载数据并分割
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练模型
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

# 记录参数
neptune.log_param("n_estimators", 100)

# 记录指标
accuracy = model.score(X_test, y_test)
neptune.log_metric("accuracy", accuracy)

# 结束实验
neptune.stop()

9. DVC – 数据版本控制

功能: DVC (Data Version Control) 是一个开源工具,提供数据和模型的版本控制功能。

使用场景:

  • 数据集的版本控制。
  • 机器学习管道的管理。
  • 模型复现和实验追踪。

示例:

# 假设你已经安装了 DVC
# 在命令行中执行以下命令来初始化 DVC
# dvc init

# 在 Python 脚本中使用 DVC 跟踪数据
import dvc.api

# 跟踪数据文件
data_url = dvc.api.get_url(
'data/iris.csv',
repo='https://github.com/iterative/dvc-examples'
)

# 使用数据
import pandas as pd
data = pd.read_csv(data_url)
print(data.head())

10. Weights & Biases – 实验追踪和管理

功能: Weights & Biases 是一个用于机器学习实验跟踪、可视化和协作的工具。

使用场景:

  • 跟踪模型训练过程。
  • 可视化实验结果。
  • 团队协作和实验分享。

示例:

import wandb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# 初始化 wandb
wandb.init(project="iris-classification")

# 加载数据并分割
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 配置模型
config = wandb.config
config.n_estimators = 100

# 训练模型
model = RandomForestClassifier(n_estimators=config.n_estimators, random_state=42)
model.fit(X_train, y_train)

# 记录指标
accuracy = model.score(X_test, y_test)
wandb.log({"accuracy": accuracy})

# 结束实验
wandb.finish()
上一篇
下一篇