如何在自定义转换器中访问 sklearn 列转换器

how to access sklearn column transformer within a custom transformer

我有一个使用自定义转换器的列转换器。 我的 X_train 是一个 numpy 数组代替 DataFrame。 下面的列表是我想在我的 Numpy 数组上使用的索引

            lst_all_cols = dtprcs.X_train.columns.values.tolist()
            lst_all_idxs = [idx for idx,_ in enumerate(lst_all_cols)]
            lst_signchng_cols = 
            [lst_all_cols.index("DAYS_INSTALMENT"),lst_all_cols.index("DAYS_ENTRY_PAYMENT")]   

下面是我对column transformer的定义

            instpmt_preprcs_pipln = ColumnTransformer( transformers = [
                                                    ( 'instpmt_repl_pipln', Xfrmer_replacenp(),lst_all_idxs ),
                                                    ( 'instpmt_sgnchng_pipln', Xfrmer_signchngnp(),lst_signchng_cols )],
                                                    remainder='passthrough')

下面的代码是自定义转换器

class Xfrmer_signchngnp(BaseEstimator, TransformerMixin):
    """
        this transformer does the change for positive to negative 
    """
    # constructor
    def __init__(self):
        #we are not going to use this         
        self.signchng_columns = None
        
    #Return self 
    def fit(self,X,y=None  ):
        return self
    
    def transform(self,X,y=None):        
        #change the sign of the columns
        for col in column:
            print('sign change np')
            X[col]= [0  if val >= 0 else (val *-1) for val in X[col] ]
    
        return X 

在列转换器中,我们在元组中定义了三个项目。转换器的名称、自定义转换器签名和作为索引的第三个参数。 在自定义转换器 fit() 或 transform() 中,我们可以将 numpy 数组作为 X 访问。 要访问 numpy 数组,我们需要索引,这是第三个参数。

我的问题 列变压器的第三个参数如何传递给自定义变压器?这样它就可以有选择地用于 access/process numpy 数组。

我尝试了 columns,column,cols 但总是出现名称错误。

列规范 传递给转换器。相反,ColumnTransformer 将输入数组切成指定的列,并将较小的数组传递给转换器。所以你的自定义转换器应该在它接收到的所有列上运行。