Как передать лучшие параметры Gridseachcv от Sklearn в другую модель?
Я нашел набор лучших гиперпараметров для моей оценки KNN с поиском сетки CV:
>>> knn_gridsearch_model.best_params_
{'algorithm': 'auto', 'metric': 'manhattan', 'n_neighbors': 3}
пока все хорошо. Я хочу обучить мою окончательную оценку этим новым параметрам. Есть ли способ, чтобы накормить выше hyperparameter дикт к нему напрямую? Я попробовал:
>>> new_knn_model = KNeighborsClassifier(knn_gridsearch_model.best_params_)
но вместо этого ожидаемый результат new_knn_model
просто получил весь dict в качестве первого параметра модели и оставил остальные по умолчанию:
>>> knn_model
KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',
metric_params=None, n_jobs=1,
n_neighbors={'n_neighbors': 3, 'metric': 'manhattan', 'algorithm': 'auto'},
p=2, weights='uniform')
разочарование действительно.
2 ответов
вы можете сделать это следующим образом:
new_knn_model = KNeighborsClassifier()
new_knn_model.set_params(**knn_gridsearch_model.best_params_)
или просто распаковать непосредственно, как предложил @ taras:
new_knn_model = KNeighborsClassifier(**knn_gridsearch_model.best_params_)
кстати, после завершения поиска сетки объект поиска сетки фактически сохраняет (по умолчанию) лучшие параметры, поэтому вы можете использовать сам объект. Кроме того, вы также можете получить доступ к классификатору с лучшими параметрами через
gs.best_estimator_
Я просто хочу отметить, что с помощью grid.best_parameters
и передайте их новой модели по unpacking
как:
my_model = KNeighborsClassifier(**grid.best_params_)
хороший и все и я лично использовал его много.
Однако, как вы можете видеть в документации здесь, если ваша цель-предсказать что-то с помощью этих best_parameters, вы можете напрямую использовать grid.predict
метод, который будет использовать эти лучшие параметры по умолчанию.
пример:
y_pred = grid.predict(X_test)
надеюсь, что это было полезный.