3

这是一个非常简单的问题,但我无法在任何地方找到答案。我尝试了 Google、TDS、Analytics Vidhya、StackOverflow 等……所以,事情就是这样,我正在使用 Scikit-Learn Pipelines,但我想看看我的数据是如何被 Pipeline 处理的。我的意思是,假设我缺少值,现在它已被填充。我想看填充的数据,我想看编码器生成的假人等等

4

1 回答 1

0

这种检查没有通用的解决方案,因为管道可以由非常不同的步骤和非常不同的数据处理步骤组成,例如插补、矢量化、特征编码等。因此,每个步骤可能有非常不同的可用信息。

因此,我认为最好的方法是通过安装变压器后将暴露的属性或变压器检索信息的专用方法分别检查每个步骤。

假设您有以下数据和管道:

from sklearn.compose import ColumnTransformer
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import OneHotEncoder
from sklearn.pipeline importPipeline
import numpy as np


X = [['Male', 1, 7], ['Female', 3, 5], ['Female', 2, 12], [np.nan, 2, 4], ['Male', np.nan, 15]]

pipeline = Pipeline(steps=[
    ('imputation', ColumnTransformer(transformers=[
        ('categorical', SimpleImputer(strategy='constant', fill_value='Missing'), [0]),
        ('numeric', SimpleImputer(strategy='mean'), [1, 2])
    ])),
    ('encoding', OneHotEncoder(handle_unknown='ignore'))
])

Xt = pipeline.fit_transform(X)

那么最好检查一下具体步骤的属性:

>>> print(pipeline['imputation'].transformers_[1][1].statistics_) # computed mean for features 1 and 2
[2.  8.6] 

>>> print(pipeline['encoding'].get_feature_names()) # names of encoded categories
[... 'x2_Female' 'x2_Male' 'x2_Missing']  

这当然假设您知道您的管道是如何组成的,以及在拟合后每个步骤将公开哪些属性以及它提供了哪些其他方法(文档scikit-learn是查找的最佳位置)。

于 2021-08-14T18:49:41.630 回答