Je faisais un projet où j'avais besoin de calculer le meilleur estimateur retourné par gridsearch.Gridsearch learning pour svm
parameters = {'gamma':[0.1, 0.5, 1, 10, 100], 'C':[1, 5, 10, 100, 1000]}
# TODO: Initialize the classifier
svr = svm.SVC()
# TODO: Make an f1 scoring function using 'make_scorer'
f1_scorer = make_scorer(score_func)
# TODO: Perform grid search on the classifier using the f1_scorer as the scoring method
grid_obj = grid_search.GridSearchCV(svr, parameters, scoring=f1_scorer)
# TODO: Fit the grid search object to the training data and find the optimal parameters
grid_obj = grid_obj.fit(X_train, y_train)
pred = grid_obj.predict(X_test)
def score_func():
f1_score(y_test, pred, pos_label='yes')
# Get the estimator
clf = grid_obj.best_estimator_
Je ne sais pas comment faire le func f1_scorer depuis que je fais la prédiction après avoir créé l'objet gridsearch. Je ne peux pas déclarer f1_scorer après avoir créé l'obj, car gridsearch l'utilise comme méthode de notation. S'il vous plaît aidez-moi comment créer cette fonction de notation pour gridsearch.
merci! cela a fonctionné de manière percutante. si je peux demander, comment gridsearch retourne-t-il les prévisions par lui-même? a-t-il quelque chose à voir avec la fonction make_scorer? –
de la même manière que vous l'avez fait, en utilisant la méthode '.predict()' de l'estimateur. Il divise les données en interne dans des ensembles de validation et de test. Puis s'ajuste à l'ensemble d'apprentissage (qui est un sous-ensemble de 'X_train, y_train') et prédit et compare avec son ensemble de test interne (qui est aussi un sous-ensemble de' X_train, y_train'). Donc, il n'utilise jamais votre 'X_test'. C'est pour vous d'évaluer votre modèle final sans parti pris – elyase