私はFunctionTransformのユースケースを用意しています。トレーニングサンプルは、何らかの基準に基づいて真のラベルとともにソートする必要があります。Pipelineの一部であるときにFunctionTransformインスタンスにyを渡すことができません
def sort_examples(X, y=None):
Xt, indices = zip(*map(itemgetter(1, 2),
sorted([(x.nnz, x, i) for i, x in
enumerate(X)], key = itemgetter(0))))
if y is not None:
yt = [yy[idx] for idx in indices]
return(Xt, yt)
classifier = Pipeline(steps=[
('sorter', FunctionTransformer(func=sort_examples,
validate=False,
accept_sparse=True,
pass_y=True)),
('classifier', DummyClassifier())])
問題は、私は(yがあまりにも変換する必要があるため)pass_y = True
を渡すことで、私の実装の機能をラップパイプラインにおけるFunctionTransformインスタンスを埋め込む際に、パイプラインが意図的に> .fit < FunctionTransformインスタンスを呼び出すことにより、Yをドロップしますです(x、y).transform(x)変換されたyを返さずに返します。
結果として、トレーニングサンプルは変換され、ソートされますが、真のラベルは関連付けられません。
私の現在の仕事はfit_transformを持つFunctionTransformと、sklearn.FunctionTransform.transformメソッドを明示的にしかし暗黙的にyを強制するためにfit_transform body内で呼び出すことによるパッチです。
このユースケースが、FunctionTransformが設計されているもので正当であるかどうかはわかりません。任意のscikit-学ぶ専門家は提案や訓練例と我々はPipeGraph、パイプラインの拡張機能を開発し
恐ろしい!共有ありがとう! – ReneWang