def all_but_first_column(X):
return X[:, 1:]
def drop_first_component(X, y):
"""
Create a pipeline with PCA and the column selector and use it to
transform the dataset.
"""
pipeline = make_pipeline(PCA(), FunctionTransformer(all_but_first_column),)
X_train, X_test, y_train, y_test = train_test_split(X, y)
pipeline.fit(X_train, y_train)
return pipeline.transform(X_test), y_test
另一方面,在使用subclassing sklearn.base.TransformerMixin时,必须定义整个类以及类的fit和transform函数。
所以您必须创建这样的类(示例代码取自this blog post)
好吧,这完全取决于你,两者或多或少都会达到相同的结果,只是你写代码的方式不同。
例如,在使用
sklearn.preprocessing.FunctionTransformer
时,您可以简单地定义要使用的函数,并像这样直接调用它(code from official documentation)另一方面,在使用
subclassing sklearn.base.TransformerMixin
时,必须定义整个类以及类的fit
和transform
函数。 所以您必须创建这样的类(示例代码取自this blog post)如您所见,
TransformerMixin
在转换函数方面比FunctionTransformer提供了更多的灵活性。您可以应用多个trasnformation或部分转换(取决于值等)。例如,对于您要记录的前50个值,而对于接下来的50个值,您希望采用逆日志,依此类推。您可以很容易地定义转换方法来有选择地处理数据。如果你只想直接使用一个函数,就使用
sklearn.preprocessing.FunctionTrasformer
,否则如果你想做更多的修改或者说复杂的转换,我建议subclassing sklearn.base.TransformerMixin
这里,请看下面的链接以获得更好的主意
相关问题 更多 >
编程相关推荐