J'essaie de faire quelque chose de similaire à GridSearch dans sklearn: Je veux obtenir une liste de trois modèles, où tous les paramètres sont fixés à l'exception de C correspondant aux 1, 10 et 100 dans chaque modèle. J'ai les deux fonctions suivantes. Je construis ensuite un modèle et spécifie un dictionnaire de paramètres.Impossible de reproduire GridSearch à partir de sklearn en python
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]}
Et de générer les modèles en utilisant les fonctions que je viens de définir.
models = models_GridSearch(model, dic)
Cependant, le résultat est le même modèle (en utilisant le dernier paramètre, à savoir 100) étant répétée 3 fois. Il semble qu'il y ait un certain alias.
Salut, seulement comme complément d'information: J'utilise '' randomizedSearchCV' et faire grid.predict() 'est équivalent à faire 'grid.best_estimator_.predict()'. C'est parce que sklearn suppose que lorsque l'attribut '.best_estimator_' est présent, le modèle est entraîné. Sinon, il n'est pas entraîné, donc il est insensé de prédire avec. Ainsi, 'grid.predict()' instancie directement l'objet '.best_estimator_'. Vraiment je ne sais pas si cette logique a lieu pour 'gridSearchCV' aussi. – Nacho