机器学习可视化API指南

机器学习领域,数据可视化是一个重要的环节,它能够帮助更直观地理解模型的性能和数据的特征。本指南将详细介绍如何使用机器学习可视化API,这是一个专为开发者设计的灵活工具,用于开发和维护绘图工具。通过这个API,开发者可以一次性运行计算,然后根据需要调整可视化效果。

可视化API概览

API的核心逻辑被封装在一个显示对象中,该对象负责存储计算数据并执行绘图操作。显示对象的构造函数__init__只包含创建可视化所需的数据。绘图方法plot接受与可视化相关的参数,例如matplotlib的坐标轴。绘图方法会将matplotlib的艺术家对象存储为属性,允许通过显示对象进行样式调整。

显示类应该定义一个或两个类方法:from_estimatorfrom_predictions。这些方法允许从估计器和一些数据或从真实值和预测值创建显示对象。在这些类方法创建了带有计算值的显示对象之后,然后调用显示的绘图方法。需要注意的是,绘图方法定义了与matplotlib相关的属性,例如线条艺术家。这允许在调用绘图方法之后进行自定义。

以ROC曲线显示为例,定义了以下方法和属性:

class RocCurveDisplay: def __init__(self, fpr, tpr, roc_auc, estimator_name): ... self.fpr = fpr self.tpr = tpr self.roc_auc = roc_auc self.estimator_name = estimator_name @classmethod def from_estimator(cls, estimator, X, y): # 获取预测结果 y_pred = estimator.predict_proba(X)[:, 1] return cls.from_predictions(y, y_pred, estimator.__class__.__name__) @classmethod def from_predictions(cls, y, y_pred, estimator_name): # 根据y和y_pred进行ROC计算 fpr, tpr, roc_auc = ... viz = RocCurveDisplay(fpr, tpr, roc_auc, estimator_name) return viz.plot() def plot(self, ax=None, name=None, **kwargs): ... self.line_ = ... self.ax_ = ax self.figure_ = ax.figure_

更多信息,请参考和。

多轴绘图

一些绘图工具,如from_estimatorPartialDependenceDisplay,支持在多个轴上绘图。支持两种不同的情况:

  1. 如果传入了一个轴列表,绘图方法会检查轴的数量是否与它期望的一致,然后在这些轴上绘制。
  2. 如果传入了一个单独的轴,那么该轴定义了一个空间,用于放置多个轴。在这种情况下,建议使用matplotlib的~matplotlib.gridspec.GridSpecFromSubplotSpec来分割空间:
import matplotlib.pyplot as plt from matplotlib.gridspec import GridSpecFromSubplotSpec fig, ax = plt.subplots() gs = GridSpecFromSubplotSpec(2, 2, subplot_spec=ax.get_subplotspec()) ax_top_left = fig.add_subplot(gs[0, 0]) ax_top_right = fig.add_subplot(gs[0, 1]) ax_bottom = fig.add_subplot(gs[1, :]) # 默认情况下,plot方法中的ax关键字是None。在这种情况下,会创建一个单独的轴,并使用gridspec API来创建绘图区域。 # 例如,from_estimator在API中绘制多条线和等高线。定义边界框的轴保存在bounding_ax_属性中。创建的各个轴存储在axes_ ndarray中,对应于网格上的轴位置。未使用的位置设置为None。此外,matplotlib的艺术家存储在lines_和contours_中,其中键是网格上的位置。当传入轴列表时,axes_、lines_和contours_是对应于传入的轴列表的1d ndarray。
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485