From f73ec868f6e3f5b60d70a9adb48e4445a0bb148f Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Tue, 3 Nov 2020 16:06:57 +0100 Subject: [PATCH 1/2] MNT update keras examples --- .../porto_seguro_keras_under_sampling.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/examples/applications/porto_seguro_keras_under_sampling.py b/examples/applications/porto_seguro_keras_under_sampling.py index 78673d9ab..593a8fdda 100644 --- a/examples/applications/porto_seguro_keras_under_sampling.py +++ b/examples/applications/porto_seguro_keras_under_sampling.py @@ -89,9 +89,13 @@ def convert_float64(X): ############################################################################### # Create a neural-network ############################################################################### - -from keras.models import Sequential -from keras.layers import Activation, Dense, Dropout, BatchNormalization +from tensorflow.keras.models import Sequential +from tensorflow.keras.layers import ( + Activation, + Dense, + Dropout, + BatchNormalization, +) def make_model(n_features): @@ -169,8 +173,8 @@ def fit_predict_balanced_model(X_train, y_train, X_test, y_test): training_generator = BalancedBatchGenerator(X_train, y_train, batch_size=1000, random_state=42) - model.fit_generator(generator=training_generator, epochs=5, verbose=1) - y_pred = model.predict_proba(X_test, batch_size=1000) + model.fit(training_generator, epochs=5, verbose=1) + y_pred = model.predict(X_test, batch_size=1000) return roc_auc_score(y_test, y_pred) From 9eb22d733fef699a2b2435c3a2538ed926a1b472 Mon Sep 17 00:00:00 2001 From: Guillaume Lemaitre Date: Tue, 3 Nov 2020 20:40:28 +0100 Subject: [PATCH 2/2] iter --- imblearn/keras/_generator.py | 36 ++++++++++++++++++++---------------- 1 file changed, 20 insertions(+), 16 deletions(-) diff --git a/imblearn/keras/_generator.py b/imblearn/keras/_generator.py index 9d2910f00..3bb1fe505 100644 --- a/imblearn/keras/_generator.py +++ b/imblearn/keras/_generator.py @@ -112,19 +112,21 @@ class BalancedBatchGenerator(*ParentClass): >>> class_dict = dict() >>> class_dict[0] = 30; class_dict[1] = 50; class_dict[2] = 40 >>> X, y = make_imbalance(iris.data, iris.target, class_dict) - >>> import keras - >>> y = keras.utils.to_categorical(y, 3) - >>> model = keras.models.Sequential() - >>> model.add(keras.layers.Dense(y.shape[1], input_dim=X.shape[1], - ... activation='softmax')) + >>> import tensorflow + >>> y = tensorflow.keras.utils.to_categorical(y, 3) + >>> model = tensorflow.keras.models.Sequential() + >>> model.add( + ... tensorflow.keras.layers.Dense( + ... y.shape[1], input_dim=X.shape[1], activation='softmax' + ... ) + ... ) >>> model.compile(optimizer='sgd', loss='categorical_crossentropy', ... metrics=['accuracy']) >>> from imblearn.keras import BalancedBatchGenerator >>> from imblearn.under_sampling import NearMiss >>> training_generator = BalancedBatchGenerator( ... X, y, sampler=NearMiss(), batch_size=10, random_state=42) - >>> callback_history = model.fit_generator(generator=training_generator, - ... epochs=10, verbose=0) + >>> callback_history = model.fit(training_generator, epochs=10, verbose=0) """ # flag for keras sequence duck-typing @@ -264,21 +266,23 @@ def balanced_batch_generator( >>> class_dict[0] = 30; class_dict[1] = 50; class_dict[2] = 40 >>> from imblearn.datasets import make_imbalance >>> X, y = make_imbalance(X, y, class_dict) - >>> import keras - >>> y = keras.utils.to_categorical(y, 3) - >>> model = keras.models.Sequential() - >>> model.add(keras.layers.Dense(y.shape[1], input_dim=X.shape[1], - ... activation='softmax')) + >>> import tensorflow + >>> y = tensorflow.keras.utils.to_categorical(y, 3) + >>> model = tensorflow.keras.models.Sequential() + >>> model.add( + ... tensorflow.keras.layers.Dense( + ... y.shape[1], input_dim=X.shape[1], activation='softmax' + ... ) + ... ) >>> model.compile(optimizer='sgd', loss='categorical_crossentropy', ... metrics=['accuracy']) >>> from imblearn.keras import balanced_batch_generator >>> from imblearn.under_sampling import NearMiss >>> training_generator, steps_per_epoch = balanced_batch_generator( ... X, y, sampler=NearMiss(), batch_size=10, random_state=42) - >>> callback_history = model.fit_generator(generator=training_generator, - ... steps_per_epoch=steps_per_epoch, - ... epochs=10, verbose=0) - + >>> callback_history = model.fit(training_generator, + ... steps_per_epoch=steps_per_epoch, + ... epochs=10, verbose=0) """ return tf_bbg(