カスタムトランスをビルドしてパイプラインで使用し、GridSearchCVを使用してそのパイプラインのパラメータを調整する必要があります。scikit learn。 GridSearchCVパイプラインのカスタムトランスフォーマset_paramsロジック。
hereからのアドバイスに続いて簡単なカスタムトランスを実装できましたが、 内部推定器を使用してトランスを実装しようとしているときに問題が発生し、この構造をGridSearchCVで使用しました。 Search(グリッド/無作為化)SearchCVやset_paramsのような検索方法の微妙な点を十分に理解していないため、私自身は答えがわかりません。
「のPythonとML入門」本はかなりナイーブGridSearchCVロジックを説明します。
...iterating over each parameters combination...
init estimator
fit estimator
evaluate
しかし、この単純なアプローチは私の質問にはお答えできません。私の問題を明確にするため、このケースを見てみましょう:
class OuterTransformer(BaseEstimator, TransformerMixin):
_options = {'std':StandardScaler(),'mm':MinMaxScaler()}
def __init__(self, option='std'):
...
私のための主な質問はである 『私は内部の推定を選択するロジックを置くのですか?』。上記の記事によると、これはこのようなものになります。一方
def __init__(self, option='std'):
self.option = option
def fit(self, data, y=None):
self.option = self._options[option]
...
を、常識はGridSearchがを呼び出す前に、内部の推定量を初期化するためにパラメータを渡す必要があることを指示にフィットするので、内部の推定はする必要があります__init__で選択します。
最初のやり方はうまくいくようですが、理由を理解できません。 誰かが私にこの現象を説明できますか?