Introduction au Deep Learning avec Keras
Miguel Esteban
Data Scientist & Founder
# Import RandomizedSearchCV from sklearn.model_selection import RandomizedSearchCV# Instancier votre classifieur tree = DecisionTreeClassifier()# Définir une série de paramètres à explorer params = {'max_depth':[3,None], "max_features":range(1,4), 'min_samples_leaf': range(1,4)}# Effectuer une recherche aléatoire avec validation croisée tree_cv = RandomizedSearchCV(tree, params, cv=5)tree_cv.fit(X,y) # Afficher les meilleurs paramètres print(tree_cv.best_params_)
{'min_samples_leaf': 1, 'max_features': 3, 'max_depth': 3}
# Fonction qui crée notre modèle Keras def create_model(optimizer='adam', activation='relu'): model = Sequential() model.add(Dense(16, input_shape=(2,), activation=activation)) model.add(Dense(1, activation='sigmoid')) model.compile(optimizer=optimizer, loss='binary_crossentropy') return model# Importer le wrapper sklearn depuis keras from tensorflow.keras.wrappers.scikit_learn import KerasClassifier# Créer un modèle au format estimateur sklearn model = KerasClassifier(build_fn=create_model, epochs=6, batch_size=16)
# Import cross_val_score from sklearn.model_selection import cross_val_score # Évaluer votre modèle keras avec une validation croisée en 5 plis kfold = cross_val_score(model, X, y, cv=5)# Afficher la précision moyenne par pli kfold.mean()
0.913333
# Afficher l'écart type par pli
kfold.std()
0.110754
# Définir une série de paramètres params = dict(optimizer=['sgd', 'adam'], epochs=3, batch_size=[5, 10, 20], activation=['relu','tanh'])# Créer un objet de recherche aléatoire avec CV et l'ajuster aux données random_search = RandomizedSearchCV(model, params_dist=params, cv=3)random_search_results = random_search.fit(X, y)# Afficher les résultats print("Best: %f using %s".format(random_search_results.best_score_, random_search_results.best_params_))
Best: 0.94 using {'optimizer': 'adam', 'epochs': 3, 'batch_size': 10, 'activation': 'relu'}
def create_model(nl=1,nn=256): model = Sequential() model.add(Dense(16, input_shape=(2,), activation='relu'))# Ajouter autant de couches cachées que spécifié dans nl for i in range(nl): # Les couches ont nn neurones model.add(Dense(nn, activation='relu')) # Finir de définir et compiler votre modèle...
# Définir des paramètres, nommés comme dans create_model()
params = dict(nl=[1, 2, 9], nn=[128,256,1000])
# Répéter la recherche aléatoire...
# Afficher les résultats...
Best: 0.87 using {'nl': 2,'nn': 128}
Introduction au Deep Learning avec Keras