修正#970。
#929での@freddyaboultonとの話し合いによると、DataChecksに追加情報を渡すことができれば素晴らしいと思います。 これには、DataCheck APIを更新し、AutoMLとの相互作用を考慮する必要があります。これは、DataCheckのインスタンスをインスタンス化せず、DataChecksクラスをパラメーターとしてsearch()
に渡すだけだからです。
@ angela97linこのユースケースについて説明していただけますか?
@dsherryもちろんです! #929で、 @ freddyaboultonと私は、処理している問題のタイプを認識していれば、 InvalidTargetDataCheck
がさらに役立つとしたらどうなるかについて話し合っていました。 たとえば、問題が二項分類であることがわかっていても、データチェックへの入力に3つ以上のクラスがある場合、警告/エラーをスローする可能性があります。 したがって、何らかの方法でパラメータを渡すことができるか、データチェックにさらに多くの情報を渡すことができると便利です。 残念ながら、これは、インスタンスではなくクラスを渡す現在の設計ではうまく機能しません。
または、BinaryClassificationInvalidTargetDataCheckなど、問題の種類ごとにデータチェッククラスを作成することもできますが、DefaultDataChecksに含める必要があるものを決定するときに、これもかなり厄介になる可能性があります(または、これもDefaultBinaryClassificationDataChecksに分解する必要がありますか?)
@ angela97lin @ freddyaboultonと話し合ったばかり
パイプラインでcomponent_graph
に使用するパターンをミラーリングするというアイデアが気に入っています。
DataCheck
サブクラス(または同じですがDataChecks
内)のリストとしてautoml検索に最初に指定できます。DataChecks
クラスのインスタンスを作成できますparameters
と同様に、 data_check_parameters
dictを渡します。これには、1つ以上のデータチェックのオプションの構成が含まれています。DataChecks
を直接使用したい場合は、同様のパターンに従うことができますdata_check_parameters
はデフォルトでNone
になるはずなので、必要がなければ作成する必要はありません。 ただし、必要な引数がデータチェックにない場合(一部の場合problem_type
など)、初期化エラーが発生するはずです。これがautoml検索でどのように見えるかのスケッチです:
# today this helper standardizes the input to a list of `DataCheck` instances, and wraps that in a `DataChecks` instance
# after this work, this would standardize the input to a `DataChecks` class.
# if `data_checks` was already a `DataChecks` class, do nothing. else if `data_checks` is a list of `DataCheck` classes, define a `AutoMLDataChecks` class to wrap and return that
data_checks_class = self._validate_data_checks(data_checks)
# next we create the `DataChecks` instance by passing in data checks parameters
data_check_parameters = {'Target Datatype Data Check': {'problem_type': self.problem_type}}
data_checks = data_checks_class(data_check_parameters)
data_check_results = data_checks.validate(X, y)
直接の使用法も同様に見えます。
次のステップ
TargetDatatype
データチェック(名前は未定)の追加を追跡するための問題を提出します。 そのデータチェックでは、 problem_type
パラメータを渡す必要がありますTargetDatatype
の問題を取り上げて、これを作成する必要があります。 🛠️😁@dsherry計画は私には良さそうです! 私が追加する唯一のことは、新しいデータチェックを作成するよりも、既存のInvalidTargetDataCheck
を拡張することを好むということですが、どちらのアプローチでもうまくいきます。 これを受け取る人は誰でも、 problem_type
がバイナリの場合、ターゲットに2つの一意の値しかないことを確認してください。 これは#929のレビューで言及されました。
if problem_type == "binary" and len(set(y)) != 2:
# Warn that we do not have two unique values in y
@ angela97lin @freddyaboultonは、この問題を使用して、a)automlとデータチェックAPIを更新してパラメーター化をサポートし、b) InvalidTargetDataCheck
を更新してターゲットを検証し、すべてのターゲットに対してインテリジェントエラーを発生させます。サポートするタイプ。
バグ#970を提出したばかりなので、詳しく説明すると、問題は上記で修正されます。 したがって、これは#970を閉じます。
@dsherryなんてタイムリー! それは私にはいいですね😊
最も参考になるコメント
@ angela97lin @freddyaboultonは、この問題を使用して、a)automlとデータチェックAPIを更新してパラメーター化をサポートし、b)
InvalidTargetDataCheck
を更新してターゲットを検証し、すべてのターゲットに対してインテリジェントエラーを発生させます。サポートするタイプ。バグ#970を提出したばかりなので、詳しく説明すると、問題は上記で修正されます。 したがって、これは#970を閉じます。