私は、与えられたscikit-learn見積もりのためにtrainableのパラメータを検出し、可能であればカテゴリ変数の許容値(および連続するものについては合理的な間隔)を見つける必要があるプロジェクトの作業を開始しました。パラメータグリッドでどの値が許容されているかを検出する方法はありますか? (sklearn)
estimator.get_params()
を使用してパラメータを使用して辞書をフェッチしてから、estimator.set_params(**{'var1':val1, 'var2':val2})
などを使用して値を設定することができます。
たとえば、KNN分類器では、 {'metric': 'minkowski', 'algorithm': 'auto', 'n_neighbors': 10, 'n_jobs': 1, 'p': 2, 'metric_params': None, 'weights': 'uniform', 'leaf_size': 30}
というパラメータがあります。
ここでは、カテゴリ(str
タイプ)、連続型(float
)、離散型(int
)などの推論する値の型を使用できます。おそらく関連する問題の1つは、デフォルトがNoneType
に設定されているパラメータですが、正当な理由でこれらのパラメータには触れないかもしれません。
ここで、チャレンジは、例えば、使用するためのパラメータグリッドを推測し、定義するようになる。 RandomizedSearchCV
。離散変数および連続変数の場合、問題は扱いやすい。 try
の組み合わせ - scipy.statsモジュールと一緒にexcept
ブロックは、間隔を制限する可能性がデフォルト値の周りの「周辺」にある(しかし、例えばn_jobs
いくつかのクレイジーな値に設定されていないと同時に慎重であることに - ことハードコーディングされているか、明示的に後で設定する必要があるかもしれません)。似たような経験があり、あなたの袖の上にいくつかのヒント/トリックを持っているなら、私はそれらについて聞いてみたいと思います。
しかし実際の問題は次のとおりです。 algorithm
実際には許容値は{‘auto’, ‘ball_tree’, ‘kd_tree’, ‘brute’}
??
私は問題に探し始めている、と我々はいくつかの非許容値に設定しようとすると、おそらく我々は、我々が得るエラーメッセージを解析することができますか?私は良いアイデアを探してくださいここにいます、(...私は私がしなければならない場合、それはかなり洗練ようです)私は手動でこれを行うことを避けるためにしたいと
ありがとうございました!
自分自身への注意:これは非常に難しい/解決できない問題である可能性があります。私はAPIとソースコードを覗いてみた。オートスケルトンはこれを解決します。手動の(ハードコード化された)ソリューションが今のところ行く方法だと思われます。 – Magnus
興味深い問題があります。[署名とデフォルトパラメータの解析](https://stackoverflow.com/questions/2677185/how-can-i-read-a-functions-signature-including-default-argument-values)を除いて、私は[this](https://stackoverflow.com/questions/713138/getting-the-docstring-from-a-function)のようなscikit-learnのドキュメントストリングを解析します。しようとするもう一つのことは、文字列化された関数を解析することです。見積もり者の '__init__'だが、そこでは何のチェックも行われていないので、見るべきかもしれない全体的な階層があるので、それは面倒なものだ。 – mkaran
こんにちは!興味深いテーマを見つけてうれしいです。はい、それは/私が検討している/考えている(ドキュメントを解析する)オプションの1つです。しかし、私が心配しているのは、ドキュメントストリングの作成方法が一貫していることです。私は少し時間をかけてパーサを実装し、ドキュメントストリングの束をテストします。 – Magnus