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))
示例#3
0
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("")