def main(): dataset = read_data(DATASET_PATH) # Get basic statistics of the loaded dataset # data_statistics(dataset) global train_x, test_x, train_y, test_y train_x, test_x, train_y, test_y = split_dataset(dataset, 0.25) # Train and Test dataset size details # print("Train_x Shape :: ", train_x.shape) # print("Train_y Shape :: ", train_y.shape) # print("Test_x Shape :: ", test_x.shape) # print("Test_y Shape :: ", test_y.shape) # print("") # print("----------Random Forest----------") # rf = random_forest(train_x, train_y) # print("Trained model:", rf) # # rf_predictions = rf.predict(test_x) # # print("Train Accuracy :: ", accuracy_score(train_y, rf.predict(train_x))) # result_statistics(rf_predictions) start_time_rf_de = time_RF.time() print("") print("----------Tuning Random Forest----------") de_rf_result = list( de_rf(rf_tuning, bounds=[(10, 150), (1, 20), (2, 20), (2, 50), (0.01, 1), (1, 10)])) print(de_rf_result[-1]) print("") print("--- %s seconds ---" % (time_RF.time() - start_time_rf_de)) print("") # print("") # print("----------Multilayer Perceptron----------") # mlpn = multilayer_perceptron(train_x, train_y) # print("Trained model:", mlpn) # # mlpn_predictions = mlpn.predict(test_x) # # print("Train Accuracy :: ", accuracy_score(train_y, mlpn.predict(train_x))) # result_statistics(mlpn_predictions) # start_time_cart_de = time_RF.time() print("----------Tuning Decision Tree----------") de_cart_result = list( de_cart(cart_tuning, bounds=[(0.01, 1), (2, 20), (1, 20), (1, 50)])) print(de_cart_result[-1]) print("") print("--- %s seconds ---" % (time_RF.time() - start_time_cart_de))
def main(): start_time = time_RF.time() dataset = read_data(DATASET_PATH) # Get basic statistics of the loaded dataset # data_statistics(dataset) global train_x, test_x, train_y, test_y train_x, test_x, train_y, test_y = split_dataset(dataset, 0.25) # Train and Test dataset size details print("Train_x Shape :: ", train_x.shape) print("Train_y Shape :: ", train_y.shape) print("Test_x Shape :: ", test_x.shape) print("Test_y Shape :: ", test_y.shape) print("") print("----------Random Forest----------") rf = random_forest(train_x, train_y) print("Trained model:", rf) rf_predictions = rf.predict(test_x) # print("Train Accuracy :: ", accuracy_score(train_y, rf.predict(train_x))) result_statistics(rf_predictions) print("") print("----------Decision Tree----------") dt = cart(train_x, train_y) print("Trained model:", dt) dt_predictions = dt.predict(test_x) # print("Train Accuracy :: ", accuracy_score(train_y, mlpn.predict(train_x))) result_statistics(dt_predictions) # print("") # print("----------KNN----------") # knn = KNN(train_x, train_y) # print("Trained model:", knn) # # knn_predictions = knn.predict(test_x) # # print("Train Accuracy :: ", accuracy_score(train_y, knn.predict(train_x))) # result_statistics(knn_predictions) print("") print("--- %s seconds ---" % (time_RF.time() - start_time))
def main(): # send it all to stderr mp.log_to_stderr() # get access to a logger and set its logging level to INFO logger = mp.get_logger() logger.setLevel(logging.INFO) dataset = read_data(DATASET_PATH) # global train_x, test_x, train_y, test_y train_x, test_x, train_y, test_y = split_dataset(dataset, 0.25) # print("--- Testing Sequence DE ---") # start_time_seq = time.time() # result_seq = list(de_sequence(fobj, bounds=[(-100, 100)] * 6)) # print(result_seq[-1]) # print("") # print("--- %s seconds ---" % (time.time() - start_time_seq)) # # sleep(5) print("--- Tuning Random Forest with Parallel DE ---") start_time_rf_tuning_para = time_RF.time() # result_para = list(de_parallel(fobj, bounds=[(-100, 100)] * 6)) # print(result_para[-1]) # initialization bounds = [(10, 150), (1, 20), (2, 20), (2, 50), (0.01, 1), (1, 10)] mut = 0.8 crossp = 0.7 popsize = 60 its = 100 dimensions = len(bounds) pop = np.random.rand(popsize, dimensions) # pdb.set_trace() min_b, max_b = np.asarray(bounds).T diff = np.fabs(min_b - max_b) pop_denorm = min_b + pop * diff # convert from float to integer pop_denorm_convert = pop_denorm.tolist() result_list = [] temp_list = [] for index in pop_denorm_convert: temp_list.append(np.int_(np.round_(index[0]))) temp_list.append(np.int_(np.round_(index[1]))) temp_list.append(np.int_(np.round_(index[2]))) temp_list.append(np.int_(np.round_(index[3]))) temp_list.append(float('%.2f' % index[4])) temp_list.append(np.int(np.round_(index[5]))) result_list.append(temp_list) temp_list = [] fitness = np.asarray([ rf_tuning(index[0], index[1], index[2], index[3], index[4], index[5], train_x, test_x, train_y, test_y) for index in result_list ]) best_idx = np.argmax(fitness) best = pop_denorm[best_idx] print("Dimension:", dimensions) print("pop:", pop) print("min_b:", min_b) print("max_b:", max_b) print("diff:", diff) print("pop_denorm:", pop_denorm) print("fitness:", fitness) print("best_idx:", best_idx) print("best:", best) lock = mp.Lock() # execute loops in each process processes = [] for x in range(mp.cpu_count()): processes.append( mp.Process(target=de_innerloop, args=(output, its, popsize, pop, mut, dimensions, crossp, min_b, diff, lock, fitness, best_idx, best, train_x, test_x, train_y, test_y))) # Run processes for p in processes: p.start() # Exit the completed processes # Without join() function call, process will remain idle and won’t terminate for p in processes: p.join() # Get process results from the output queue results = [output.get() for p in processes] print(results) print("") print("--- %s seconds ---" % (time_RF.time() - start_time_rf_tuning_para)) print("")