在 sklearn 管道中获取自定义转换器的实例变量
Get instance variable of costum transformer in sklearn pipeline
我的任务是处理数据集上的监督学习问题,并希望创建一个从头到尾的完整流水线。
从训练-测试拆分开始。我写了一个自定义 class 来将 sklearns train_test_split 实现到 sklearn 管道中。它是 fit_transform returns 训练集。后来我仍然想访问测试集,所以我在自定义转换器class中将其设为实例变量,如下所示:
self.test_set = test_set
from sklearn.model_selection import train_test_split
class train_test_splitter([...])
[...
...]
def transform(self, X):
train_set, test_set = train_test_split(X, test_size=0.2)
self.test_set = test_set
return train_set
split_pipeline = Pipeline([
('splitter', train_test_splitter() ),
])
df_train = split_pipeline.fit_transform(df)
现在我想得到这样的测试集:
df_test = splitter.test_set
它不工作。如何获取实例“splitter”的变量。它存储在哪里?
您可以通过多种方式访问管道的步骤。例如,
split_pipeline['splitter'].test_set
也就是说,我认为这不是一个好方法。当您用更多步骤填充管道时,在 fit
时间一切都会按您想要的方式工作,但是当 predicting/transforming 处理其他数据时您仍将调用您的 transform
方法,该方法将生成new train-test 分裂,忘记旧的,并发送新的 train 为剩余的步骤设置管道。
我的任务是处理数据集上的监督学习问题,并希望创建一个从头到尾的完整流水线。 从训练-测试拆分开始。我写了一个自定义 class 来将 sklearns train_test_split 实现到 sklearn 管道中。它是 fit_transform returns 训练集。后来我仍然想访问测试集,所以我在自定义转换器class中将其设为实例变量,如下所示:
self.test_set = test_set
from sklearn.model_selection import train_test_split
class train_test_splitter([...])
[...
...]
def transform(self, X):
train_set, test_set = train_test_split(X, test_size=0.2)
self.test_set = test_set
return train_set
split_pipeline = Pipeline([
('splitter', train_test_splitter() ),
])
df_train = split_pipeline.fit_transform(df)
现在我想得到这样的测试集:
df_test = splitter.test_set
它不工作。如何获取实例“splitter”的变量。它存储在哪里?
您可以通过多种方式访问管道的步骤。例如,
split_pipeline['splitter'].test_set
也就是说,我认为这不是一个好方法。当您用更多步骤填充管道时,在 fit
时间一切都会按您想要的方式工作,但是当 predicting/transforming 处理其他数据时您仍将调用您的 transform
方法,该方法将生成new train-test 分裂,忘记旧的,并发送新的 train 为剩余的步骤设置管道。