def adasyn_sampling(X, Y): kind = 'regular' #smote = SMOTE(ratio=ratio, random_state=RND_SEED, kind=kind) nsamples, nx, ny = X.shape X = X.reshape((nsamples, nx*ny)) X,Y = ADASYN().fit_sample(X, Y) nsamples, ny = X.shape X = X.reshape((nsamples, nx, ny/nx)) Y = Y.reshape((nsamples, 1)) return X, Y #X_resampled, Y_resampled
# Apply SMOTE method on training data X_train_SMOTE, Y_train_SMOTE = SMOTE(random_state=0).fit_resample( X_train, Y_train) X_train_image_SMOTE, Y_train_image_SMOTE = SMOTE(random_state=0).fit_resample( X_train_image.reshape(X_train_image.shape[0], -1), Y_train_image) X_train_image_SMOTE = X_train_image_SMOTE.reshape(X_train_image_SMOTE.shape[0], 50, 50, 3) # Apply ADASYN method on training data X_train_ADASYN, Y_train_ADASYN = ADASYN(random_state=0).fit_resample( X_train, Y_train) X_train_image_ADASYN, Y_train_image_ADASYN = ADASYN( random_state=0).fit_resample( X_train_image.reshape(X_train_image.shape[0], -1), Y_train_image) X_train_image_ADASYN = X_train_image_ADASYN.reshape( X_train_image_ADASYN.shape[0], 50, 50, 3) #0 - None fire image, 1 - fire image print("Origin data :", collections.Counter(Y_train)) print("After SMOTE :", collections.Counter(Y_train_SMOTE)) print("After ADASYN :", collections.Counter(Y_train_ADASYN)) #model define model = models.Sequential() model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(50, 50, 3))) model.add(Conv2D(32, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(Conv2D(64, (3, 3), activation='relu')) model.add(MaxPooling2D(pool_size=(2, 2)))