Aprendizaje supervisado con scikit-learn
George Boorman
Core Curriculum Manager
Regresión Ridge/Lasso: elegir alpha
KNN: elegir n_neighbors
Hiperparámetros: parámetros que especificamos antes de ajustar el modelo
alpha
y n_neighbors
Probar muchos valores diferentes de hiperparámetros
Colocarlos todos por separado
Comprobar su rendimiento
Elegir los valores de mejor rendimiento
Esto se denomina ajuste de hiperparámetros.
Es esencial utilizar la validación cruzada para evitar el sobreajuste del conjunto de prueba.
Todavía podemos dividir los datos y realizar una validación cruzada en el conjunto de entrenamiento.
Conservaremos el conjunto de pruebas para la evaluación final.
from sklearn.model_selection import GridSearchCV
kf = KFold(n_splits=5, shuffle=True, random_state=42)
param_grid = {"alpha": np.arange(0.0001, 1, 10), "solver": ["sag", "lsqr"]}
ridge = Ridge()
ridge_cv = GridSearchCV(ridge, param_grid, cv=kf)
ridge_cv.fit(X_train, y_train)
print(ridge_cv.best_params_, ridge_cv.best_score_)
{'alpha': 0.0001, 'solver': 'sag'}
0.7529912278705785
from sklearn.model_selection import RandomizedSearchCV
kf = KFold(n_splits=5, shuffle=True, random_state=42) param_grid = {'alpha': np.arange(0.0001, 1, 10), "solver": ['sag', 'lsqr']} ridge = Ridge()
ridge_cv = RandomizedSearchCV(ridge, param_grid, cv=kf, n_iter=2) ridge_cv.fit(X_train, y_train)
print(ridge_cv.best_params_, ridge_cv.best_score_)
{'solver': 'sag', 'alpha': 0.0001}
0.7529912278705785
test_score = ridge_cv.score(X_test, y_test)
print(test_score)
0.7564731534089224
Aprendizaje supervisado con scikit-learn