cruzada - k means python example
¿Cómo pasar elegantemente los mejores parámetros de GridseachCV de Sklearn a otro modelo? (2)
Puedes hacer eso de la siguiente manera:
new_knn_model = KNeighborsClassifier()
new_knn_model.set_params(**knn_gridsearch_model.best_params_)
O simplemente desempaquetar directamente como @taras sugirió:
new_knn_model = KNeighborsClassifier(**knn_gridsearch_model.best_params_)
Por cierto, después de terminar de ejecutar la búsqueda de grillas, el objeto de búsqueda de grillas mantiene (de manera predeterminada) los mejores parámetros, para que pueda usar el objeto en sí. Alternativamente, también puede acceder al clasificador con los mejores parámetros a través de
gs.best_estimator_
He encontrado un conjunto de mejores hiperparámetros para mi estimador KNN con Grid Search CV:
>>> knn_gridsearch_model.best_params_
{''algorithm'': ''auto'', ''metric'': ''manhattan'', ''n_neighbors'': 3}
Hasta aquí todo bien. Quiero entrenar mi estimador final con estos parámetros recién encontrados. ¿Hay alguna manera de alimentar directamente el dictador de hiperparámetros anterior? Intenté esto:
>>> new_knn_model = KNeighborsClassifier(knn_gridsearch_model.best_params_)
pero, en cambio, el esperado resultado new_knn_model
acaba de obtener el dict completo como el primer parámetro del modelo y dejó los restantes como predeterminados:
>>> 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'')
Decepcionante de hecho.
Solo quiero señalar que usando grid.best_parameters
y pasarlos a un nuevo modelo unpacking
como:
my_model = KNeighborsClassifier(**grid.best_params_)
es bueno y todo y yo personalmente lo usé mucho.
Sin embargo, como puede ver en la documentación aquí , si su objetivo es predecir algo utilizando esos mejores parámetros, puede usar directamente el método grid.predict
, que utilizará estos mejores parámetros por defecto.
ejemplo:
y_pred = grid.predict(X_test)
Espero que esto haya sido útil.