私はsklearnのGridSearchに似たことをしようとしています:1、10、100に対応するC以外のすべてのパラメータが固定されている3つのモデルのリストを取得したい各モデルで。私は次の2つの機能を持っています。PythonのsklearnからGridSearchを再現できません
def params_GridSearch(dic_params):
keys, values = dic_params.keys(), dic_params.values()
lst_params = []
for vs in itertools.product(*values):
lst_params.append({k:v for k,v in zip(keys,vs)})
return lst_params
def models_GridSearch(model, dic_params):
models = [ model.set_params(**params) for params in params_GridSearch(dic_params) ]
return models
次にモデルを作成し、パラメータの辞書を指定します。
from sklearn.svm import SVC
model = SVC()
dic = {'C': [1,10,100]}
ここで定義した関数を使用してモデルを生成します。
models = models_GridSearch(model, dic)
しかし、結果は同じモデル(最後のパラメータ、つまり100を使用)を3回繰り返したものです。何らかのエイリアシングが起こっているようです。
こんにちは、のみなどの追加情報:私は 'randomizedSearchCV'を使用し、' grid.predictを(やって) 'です'grid.best_estimator_.predict()'と同じです。これは、 '.best_estimator_'属性が存在するとき、モデルが訓練されていることをSklearnが想定しているからです。さもなければ、それは訓練されていないので、それを予測することは無意味です。したがって、 'grid.predict()'は '.best_estimator_'オブジェクトに直接インスタンス化します。本当に私はこのロジックが 'gridSearchCV'に対しても起こっているかどうかわかりません。 – Nacho