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()