如何使用自定义模型制作 sklearn 管道?

数据挖掘 神经网络 支持向量机 scikit-学习
2021-10-02 13:59:12

我想使用我已经拥有的自定义人工神经网络制作一个 sklearn 管道。我想制作管道,其中输入进入 ANN,其输出进入 sklearn.svm.SVC 模型并进行最终预测。那么,我怎样才能使用 sklearn 管道做到这一点呢?

1个回答

实现自定义转换器很简单。您必须实现 fit 和 transform 方法,如下所示。由于您的 ANN 已经经过训练(对吗?) fit 方法无需执行任何操作,只需返回 self。转换方法必须将传入的数据传递给 ANN 并返回其输出。

from sklearn.base import BaseEstimator, TransformerMixin

class MyANNTransformer(BaseEstimator, TransformerMixin):
    def __init__(self, ann):
        self.ann = ann

    def fit(self, X, y):
        return self

    def transform(self, X)
        return self.ann.predict(X)

现在您可以将其包含在管道中:

from sklearn.pipeline import make_pipeline
from sklearn.svm import SVC

pipe = make_pipeline(MyANNTransformer(ann),
                     SVC())

pipe.fit(Xtrain, ytrain)
pipe.predict(Xtest)