たくさんのパラメーターを持つ関数があります。すべてのパラメーターを手動で設定するのではなく、グリッド検索を実行したいと考えています。各パラメーターの可能な値のリストがあります。パラメータのすべての可能な組み合わせについて、それらのパラメータでのアルゴリズムのパフォーマンスを報告する関数を実行したいと考えています。この結果を多次元マトリックスに保存したいので、あとがきで最大パフォーマンスのインデックスを見つけることができます。これにより、最適なパラメーターが得られます。コードの記述方法は次のとおりです。
param1_list = [p11, p12, p13,...]
param2_list = [p21, p22, p23,...] # not necessarily the same number of values
...
results_size = (len(param1_list), len(param2_list),...)
results = np.zeros(results_size, dtype = np.float)
for param1_idx in range(len(param1_list)):
for param2_idx in range(len(param2_list)):
...
param1 = param1_list[param1_idx]
param2 = param2_list[param2_idx]
...
results[param1_idx, param2_idx, ...] = my_func(param1, param2, ...)
max_index = np.argmax(results) # indices of best parameters!
検索する値を簡単に操作できるようにしたいので、リストを定義する最初の部分をそのままにしておきたいと思います。
また、さまざまなパラメーターの変更がアルゴリズムのパフォーマンスにどのように影響するかを視覚化するため、結果マトリックスをそのままにしたいと思います。
ただし、中間のビットは非常に反復的でかさばります (特に、多くのパラメーターがあり、パラメーターを追加または削除したい場合があるため)、結果を初期化するためのより簡潔でエレガントな方法が必要だと思います。マトリックス、すべてのインデックスを反復処理し、適切なパラメーターを設定します。
それで、ありますか?