我该如何解释管道流水线的预测?

问题描述

我有一个 imblearn (不是sklearn)管道,该管道包括以下步骤:

  1. 列选择器
  2. 预处理管道(在不同列上具有OneHotEncoders和CountVectorizers的ColumnTransformer)
  3. imblearn的SMOTE
  4. XGBClassifier

我有一个表格数据集,我正在尝试解释我的预测。 我设法通过一些工作得出了重要特征图,但都无法做到 eli5或石灰起作用。

Lime要求我将数据转换为上一次转换之前的状态(因为管道中的转换器(如自定义矢量化器会创建新列))。 原则上,我可以像这样对我的管道进行切片:pipeline[:-1].predict(instance)。但是,出现以下错误{AttributeError}'SMOTE' object has no attribute 'predict'

我还尝试了eli5解释器,因为它据说可以与Sklearn Pipelines一起使用。 但是,在运行eli5.sklearn.explain_prediction.explain_prediction_sklearn_not_supported(pipeline,instance_to_explain)之后,我收到一条消息,提示不支持分类器。

将感谢有关如何进行此操作的任何想法。

解决方法

在预测期间,Imblearn的采样器实际上是无操作(即身份)转换器。因此,在安装管道之后,将它们删除是安全的。

尝试以下工作流程:

  1. 构造一个Imblearn管道,并将其安装。
  2. 将已安装的Imblearn管道的步骤提取到新的Scikit-Learn管道。
  3. 删除SMOTE步骤。
  4. 使用标准的Scikit-Learn管道解释工具解释您的预测。