Solución:
Puede utilizar la búsqueda de cuadrícula para encontrar la mejor C
valor para ti. Básicamente más pequeño C
especificar una regularización más fuerte.
>>> param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000] }
>>> clf = GridSearchCV(LogisticRegression(penalty='l2'), param_grid)
GridSearchCV(cv=None,
estimator=LogisticRegression(C=1.0, intercept_scaling=1,
dual=False, fit_intercept=True, penalty='l2', tol=0.0001),
param_grid={'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]})
Consulte el documento GridSearchCv para obtener más detalles sobre su aplicación.
La búsqueda en cuadrícula es una forma brutal de encontrar los parámetros óptimos porque entrena y prueba todas las combinaciones posibles. La mejor manera es utilizar la optimización bayesiana, que aprende de la puntuación de evaluación anterior y requiere menos tiempo de cálculo.
Puede utilizar el siguiente código para obtener detalles más generales:
LR = LogisticRegression()
LRparam_grid = {
'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000],
'penalty': ['l1', 'l2'],
'max_iter': list(range(100,800,100)),
'solver': ['newton-cg', 'lbfgs', 'liblinear', 'sag', 'saga']
}
LR_search = GridSearchCV(LR, param_grid=LRparam_grid, refit = True, verbose = 3, cv=5)
# fitting the model for grid search
LR_search.fit(X_train , y_train)
LR_search.best_params_
# summarize
print('Mean Accuracy: %.3f' % LR_search.best_score_)
print('Config: %s' % LR_search.best_params_)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)