El ajuste de hiperparámetros se realiza para aumentar la eficiencia de un modelo ajustando los parámetros de la red neuronal. Algunas API de scikit-learn como GridSearchCV y RandomizedSearchCV se utilizan para realizar ajustes de hiperparámetros.
En este artículo, aprenderá a usar GridSearchCV para ajustar los hiperparámetros de Keras Neural Networks.
Acercarse:
- Envolveremos los modelos de Keras para usarlos en scikit-learn usando KerasClassifier, que es un envoltorio.
- Usaremos validación cruzada usando KerasClassifier y GridSearchCV
- Sintonice hiperparámetros como el número de épocas, el número de neuronas y el tamaño del lote.
Implementación de la API clasificadora scikit-learn para Keras:
tf.keras.wrappers.scikit_learn.KerasClassifier(
build_fn=Ninguno, **sk_params
)
Código:
# import the libraries import tensorflow as tf import pandas as pd from sklearn.compose import ColumnTransformer from sklearn.preprocessing import OneHotEncoder from keras.wrappers.scikit_learn import KerasClassifier from sklearn.model_selection import GridSearchCV from sklearn.preprocessing import LabelEncoder from sklearn.preprocessing import StandardScaler
El conjunto de datos se puede descargar desde aquí
. Importe el conjunto de datos con el que predeciremos si un cliente se queda o se va.
Código:
# The last column is a binary value dataset = pd.read_csv('Churn_Modelling.csv') X = dataset.iloc[:, 3:-1].values y = dataset.iloc[:, -1].values
Código: preprocesar los datos
le = LabelEncoder() X[:, 2] = le.fit_transform(X[:, 2]) #perform one hot encoding ct = ColumnTransformer(transformers=[('encoder', OneHotEncoder(), [1])], remainder='passthrough') X = np.array(ct.fit_transform(X)) # perform standardization of the data. sc = StandardScaler() X = sc.fit_transform(X)
Para usar el envoltorio KerasClassifier, necesitaremos construir nuestro modelo en una función que debe pasarse al argumento build_fn en el constructor KerasClassifier.
Código:
def build_clf(unit): # creating the layers of the NN ann = tf.keras.models.Sequential() ann.add(tf.keras.layers.Dense(units=unit, activation='relu')) ann.add(tf.keras.layers.Dense(units=unit, activation='relu')) ann.add(tf.keras.layers.Dense(units=1, activation='sigmoid')) ann.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ['accuracy']) return ann
Código: crea el objeto de la clase KerasClassifier
model=KerasClassifier(build_fn=build_clf)
Ahora crearemos el diccionario de los parámetros que queremos ajustar y pasar como argumento en GridSearchCV.
Código:
params={'batch_size':[100, 20, 50, 25, 32], 'nb_epoch':[200, 100, 300, 400], 'unit':[5,6, 10, 11, 12, 15], } gs=GridSearchCV(estimator=model, param_grid=params, cv=10) # now fit the dataset to the GridSearchCV object. gs = gs.fit(X, y)
El miembro best_score_ proporciona la mejor puntuación observada durante el procedimiento de optimización y best_params_ describe la combinación de parámetros que logró los mejores resultados.
Código:
best_params=gs.best_params_ accuracy=gs.best_score_
Producción:
Precisión: 0,80325
Mejores parámetros: {‘batch_size’: 20, ‘nb_epoch’: 200, ‘unit’: 15}
Publicación traducida automáticamente
Artículo escrito por maryamnadeem20 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA