如何在自定义转换器中访问 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
将输入数组切成指定的列,并将较小的数组传递给转换器。所以你的自定义转换器应该在它接收到的所有列上运行。
我有一个使用自定义转换器的列转换器。 我的 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
将输入数组切成指定的列,并将较小的数组传递给转换器。所以你的自定义转换器应该在它接收到的所有列上运行。