def run_VanilaGANGenerator(train, test, epochs, latent_size, hidden_neurons, n_samples, learning_rate, random_neg_sample, real_pos, name): gan_obj = VanilaGANGenerator(train, test, epochs, latent_size, name) gan_obj.define_models_GAN(learning_rate, hidden_neurons, type=None) gan_obj.train_model() gan_sample = gan_obj.generate_samples(n_samples) #tsne_plot(gan_sample, name) ks_result1, ks_result2 = compare_attributes_distribution( real_pos, gan_sample, name) fid = calculate_fid(real_pos, gan_sample) print("Frechet Inception Distance:", fid) tsne_data_comparision(real_pos, random_neg_sample, gan_sample, name, None, 'VGAN') get_combined_generated = get_combined_generated_real( gan_sample, train, name) # print("Count of Failure and non failure",get_combined_generated.failure.value_counts()) (train_X, train_y) = split_XY(get_combined_generated) (test_X, test_y) = split_XY(test) # classify_baseline_model(test_y) #multiple_classifier(train_X, train_y.values.ravel(), test_X, test_y.values.ravel(), name, ks_result1, ks_result2, # fid) # xgb_classifier(train_X, train_y.values.ravel(), test_X, test_y.values.ravel(),name) # rf_classifier(train_X, train_y.values.ravel(), test_X, test_y.values.ravel(),name) return gan_sample, ks_result1, ks_result2, fid
def vae_gan_model(): epochs, latent_size = 1500, 50 name = "best_test-2_vae_gan_gantrain_200-128_64_50_0005" n_layer = 3 hidden_neurons = 128 learning_rate = 0.0002 cgan_sample, vae_sample, ks_result1, ks_result2, fid = run_VAECGAN_Generator( train_main, test_main, epochs, latent_size, n_samples, n_layer, learning_rate, hidden_neurons, name, random_neg, random_pos) print("VAE sample shape", vae_sample.shape) tsne_data_comparision(random_pos, random_neg, cgan_sample, name, vae_sample, method='VAE_CGAN') get_combined_generated = get_combined_generated_real( cgan_sample, train_main, name) (train_X, train_y) = split_XY(get_combined_generated) (test_X, test_y) = split_XY(test_main) multiple_classifier(train_X, train_y.values.ravel(), test_X, test_y.values.ravel(), name, ks_result1, ks_result2, fid) print( "======================Both GAN and VAE=============================") name = name + "VAE_GAN-both" get_combined_generated = get_combined_generated_real( vae_sample, get_combined_generated, name) (train_X, train_y) = split_XY(get_combined_generated) (test_X, test_y) = split_XY(test_main)
def cgan_vae_model(): epochs, latent_size = 200, 50 name = "best_test_cgan-vae_100-128_64_50_0005" n_layer = 2 hidden_neurons = 64 learning_rate = 0.0005 vae_sample, cgan_sample, ks_result1, ks_result2, fid = run_CGAN_VAE_Generator( train_main, test_main, epochs, latent_size, n_samples, n_layer, learning_rate, hidden_neurons, name, random_neg, random_pos) tsne_data_comparision(random_pos, random_neg, vae_sample, name, cgan_sample, 'CGAN_VAE') get_combined_generated = get_combined_generated_real( vae_sample, train_main, name) (train_X, train_y) = split_XY(get_combined_generated) (test_X, test_y) = split_XY(test_main) multiple_classifier(train_X, train_y.values.ravel(), test_X, test_y.values.ravel(), name, ks_result1, ks_result2, fid) print( "======================Both GAN and VAE=============================") name = name + "CGAN-VAE-both" get_combined_generated = get_combined_generated_real( vae_sample, get_combined_generated, name) (train_X, train_y) = split_XY(get_combined_generated) (test_X, test_y) = split_XY(test_main)
def run_VAECGAN_Generator(train, test, epochs, latent_size, n_samples, n_layer, learning_rate, hidden_neurons, name, random_neg_sample, random_pos): vae_sample = pd.read_csv(r'generated_data/VAE_no_mmd.csv').sample( n=1000, random_state=123) # vae_sample, ks_result1, ks_result2, fid = run_VAEGenerator(train, test, epochs, latent_size, # n_samples, n_layer, # hidden_neurons, # learning_rate, name, # random_neg) # # vae_sample, noise = vae_obj.generate_samples(n_samples) # get_vae_combine = get_combined_generated_real(vae_sample, train, "vae_gan") vae_combine = get_combined_generated_real(vae_sample, train, name) cgan_sample, ks_result3, ks_result4, fid2 = run_CGANGenerator( vae_combine, test, epochs, latent_size, n_samples, n_layer, learning_rate, hidden_neurons, name, random_neg_sample, random_pos, model_type='VAE_CGAN') tsne_data_comparision(random_pos, random_neg_sample, cgan_sample[:, :-1], name, vae_sample, 'VAE_CGAN') #get_combined_generated = get_combined_generated_real(cgan_sample, train, name) return cgan_sample, vae_sample, ks_result3, ks_result4, fid2 print("Count of Failure and non failure", get_combined_generated.shape, get_combined_generated.failure.value_counts()) (train_X, train_y) = split_XY(get_combined_generated) (test_X, test_y) = split_XY(test) #multiple_classifier(train_X, train_y.values.ravel(), test_X, test_y.values.ravel(), # name, ks_result3, ks_result4, fid2) print( "======================Both GAN and VAE=============================") name = name + "VAE_GAN-both" get_combined_generated = get_combined_generated_real( vae_sample, get_combined_generated, name) (train_X, train_y) = split_XY(get_combined_generated) (test_X, test_y) = split_XY(test)
def run_VAEGenerator(train, test, epochs, latent, n_samples, n_layer, hidden_neurons, learning_rate, name, random_neg_sample): vae_obj = VAEGenerator(train, test, epochs, latent, name) vae_obj.build_model(n_layer, hidden_neurons, learning_rate) name = vae_obj.train_model() vae_sample, noise = vae_obj.generate_samples(n_samples) print(vae_sample.shape, train.shape) real_pos = train[train.failure == 1][train.columns.drop('failure')].sample( frac=1, random_state=123) ks_result1, ks_result2 = compare_distribution(real_pos, vae_sample, name) fid = calculate_fid(real_pos, vae_sample) print("Frechet Inception Distance:", fid) tsne_data_comparision(real_pos, random_neg_sample, vae_sample, name, 'VAE') return vae_sample, ks_result1, ks_result2, fid
def run_CGANGenerator(train, test, epochs, latent_size, n_samples, n_layer, learning_rate, hidden_neurons, name, random_neg_sample, real_pos, model_type='CGAN'): gan_obj = CGANGenerator(train, test, epochs, latent_size, name) gan_obj.define_models_CGAN(n_layer, n_layer, learning_rate, learning_rate, latent_size, hidden_neurons, type=None) gan_obj.train_model(model_type) gan_sample = gan_obj.generate_samples(n_samples) ks_result1, ks_result2 = compare_distribution(real_pos, gan_sample[:, :-1], name) fid = calculate_fid(real_pos, gan_sample[:, :-1]) print("Frechet Inception Distance:", fid) if model_type == 'CGAN': tsne_data_comparision(real_pos, random_neg_sample, gan_sample[:, :-1], name, None, model_type) #get_combined_generated = get_combined_generated_real(gan_sample[:,:-1],train,name) # print("Count of Failure and non failure",get_combined_generated.failure.value_counts()) #(train_X, train_y) = split_XY(get_combined_generated) #(test_X, test_y) = split_XY(test) #multiple_classifier(train_X, train_y.values.ravel(), test_X, test_y.values.ravel(),name,ks_result1,ks_result2,fid) #xgb_classifier(train_X, train_y.values.ravel(), test_X, test_y.values.ravel(),name) #rf_classifier(train_X, train_y.values.ravel(), test_X, test_y.values.ravel(),name) return gan_sample[:, :-1], ks_result1, ks_result2, fid