示例#1
0
def training_and_test(token, train_data, test_data, num_classes, result):
    """Train and test

    Args:
        token (:obj:`str`): token representing this run
        train_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of training feature and label
        test_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of testing feature and label
        num_classes (:obj:`int`): Number of classes
        result (:obj:`pyActLearn.performance.record.LearningResult`): LearningResult object to hold learning result
    """
    model = RandomForestClassifier(n_estimators=20, criterion="entropy")
    model.fit(train_data[0], train_data[1].flatten())
    # Test
    predicted_y = model.predict(test_data[0])
    predicted_proba = model.predict_proba(test_data[0])
    # Evaluate the Test and Store Result
    confusion_matrix = get_confusion_matrix(num_classes=num_classes,
                                            label=test_data[1].flatten(), predicted=predicted_y)
    result.add_record(model.get_params(), key=token, confusion_matrix=confusion_matrix)
    # In case any label is missing, populate it
    if predicted_proba.shape[1] != num_classes:
        temp_array = np.zeros((predicted_proba.shape[0], num_classes), np.float32)
        for i in range(len(model.classes_)):
            temp_array[:, model.classes_[i]] = predicted_proba[:, i]
        predicted_proba = temp_array
    return predicted_y, predicted_proba
示例#2
0
def training_and_test(token, train_data, test_data, num_classes, result, model, log_dir):
    """Train and test

    Args:
        token (:obj:`str`): token representing this run
        train_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of training feature and label
        test_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of testing feature and label
        num_classes (:obj:`int`): Number of classes
        result (:obj:`pyActLearn.performance.record.LearningResult`): LearningResult object to hold learning result
    """
    train_y = np.zeros((train_data[1].shape[0], num_classes))
    test_y = np.zeros((test_data[1].shape[0], num_classes))
    for i in range(train_data[1].shape[0]):
        train_y[i, train_data[1].flatten()[i]] = 1
    for i in range(test_data[1].shape[0]):
        test_y[i, test_data[1].flatten()[i]] = 1
    model.fit(train_data[0], train_y, iter_num=5000, summaries_dir=log_dir, test_x=test_data[0], test_y=test_y,
              criterion='monitor_based')
    # Test
    predicted_y = mlp.predict(test_data[0])
    # Evaluate the Test and Store Result
    confusion_matrix = get_confusion_matrix(num_classes=num_classes,
                                            label=test_data[1].flatten(), predicted=predicted_y)
    variable_file = os.path.join(log_dir, token + '_save.ckpt')
    saver.save(mlp.sess, variable_file)
    result.add_record(variable_file, key=token, confusion_matrix=confusion_matrix)
    return predicted_y
示例#3
0
def training_and_test(token, train_data, test_data, num_classes, result, model, log_dir):
    """Train and test

    Args:
        token (:obj:`str`): token representing this run
        train_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of training feature and label
        test_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of testing feature and label
        num_classes (:obj:`int`): Number of classes
        result (:obj:`pyActLearn.performance.record.LearningResult`): LearningResult object to hold learning result
    """
    train_y = np.zeros((train_data[1].shape[0], num_classes))
    test_y = np.zeros((test_data[1].shape[0], num_classes))
    for i in range(train_data[1].shape[0]):
        train_y[i, train_data[1].flatten()[i]] = 1
    for i in range(test_data[1].shape[0]):
        test_y[i, test_data[1].flatten()[i]] = 1
    model.fit(train_data[0], train_y, pretrain_iter_num=5000, tuning_iter_num=5000,
              summaries_dir=log_dir, test_x=test_data[0], test_y=test_y,
              summary_interval=50)
    # Test
    predicted_y = model.predict(test_data[0])
    # Evaluate the Test and Store Result
    confusion_matrix = get_confusion_matrix(num_classes=num_classes,
                                            label=test_data[1].flatten(), predicted=predicted_y)
    variable_file = os.path.join(log_dir, token + '_save.ckpt')
    saver.save(model.sess, variable_file)
    result.add_record(variable_file, key=token, confusion_matrix=confusion_matrix)
    return predicted_y
示例#4
0
def training_and_test(token, train_data, test_data, num_classes, result):
    """Train and test

    Args:
        token (:obj:`str`): token representing this run
        train_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of training feature and label
        test_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of testing feature and label
        num_classes (:obj:`int`): Number of classes
        result (:obj:`pyActLearn.performance.record.LearningResult`): LearningResult object to hold learning result
    """
    model = RandomForestClassifier(n_estimators=20, criterion="entropy")
    model.fit(train_data[0], train_data[1].flatten())
    # Test
    predicted_y = model.predict(test_data[0])
    predicted_proba = model.predict_proba(test_data[0])
    # Evaluate the Test and Store Result
    confusion_matrix = get_confusion_matrix(num_classes=num_classes,
                                            label=test_data[1].flatten(),
                                            predicted=predicted_y)
    result.add_record(model.get_params(),
                      key=token,
                      confusion_matrix=confusion_matrix)
    # In case any label is missing, populate it
    if predicted_proba.shape[1] != num_classes:
        temp_array = np.zeros((predicted_proba.shape[0], num_classes),
                              np.float32)
        for i in range(len(model.classes_)):
            temp_array[:, model.classes_[i]] = predicted_proba[:, i]
        predicted_proba = temp_array
    return predicted_y, predicted_proba
示例#5
0
def training_and_test(token, train_data, test_data, num_classes, result):
    """Train and test

    Args:
        token (:obj:`str`): token representing this run
        train_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of training feature and label
        test_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of testing feature and label
        num_classes (:obj:`int`): Number of classes
        result (:obj:`pyActLearn.performance.record.LearningResult`): LearningResult object to hold learning result
    """
    svm_model = sklearn.svm.SVC(kernel='rbf')
    svm_model.fit(train_data[0], train_data[1].flatten())
    # Test
    predicted_y = svm_model.predict(test_data[0])
    # Evaluate the Test and Store Result
    confusion_matrix = get_confusion_matrix(num_classes=num_classes,
                                            label=test_data[1].flatten(), predicted=predicted_y)
    result.add_record(svm_model, key=token, confusion_matrix=confusion_matrix)
    return predicted_y
def training_and_test(token, train_data, test_data, num_classes, result):
    """Train and test

    Args:
        token (:obj:`str`): token representing this run
        train_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of training feature and label
        test_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of testing feature and label
        num_classes (:obj:`int`): Number of classes
        result (:obj:`pyActLearn.performance.record.LearningResult`): LearningResult object to hold learning result
    """
    decision_tree = DecisionTree(train_data[0].shape[1], num_classes, log_level=logging.WARNING)
    decision_tree.build(train_data[0], train_data[1].flatten())
    # Test
    predicted_y = decision_tree.classify(test_data[0])
    # Evaluate the Test and Store Result
    confusion_matrix = get_confusion_matrix(num_classes=num_classes,
                                            label=test_data[1].flatten(), predicted=predicted_y)
    result.add_record(decision_tree.export_to_dict(), key=token, confusion_matrix=confusion_matrix)
    return predicted_y
示例#7
0
def training_and_test(token, train_data, test_data, num_classes, result):
    """Train and test

    Args:
        token (:obj:`str`): token representing this run
        train_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of training feature and label
        test_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of testing feature and label
        num_classes (:obj:`int`): Number of classes
        result (:obj:`pyActLearn.performance.record.LearningResult`): LearningResult object to hold learning result
    """
    svm_model = sklearn.svm.SVC(kernel='rbf')
    svm_model.fit(train_data[0], train_data[1].flatten())
    # Test
    predicted_y = svm_model.predict(test_data[0])
    # Evaluate the Test and Store Result
    confusion_matrix = get_confusion_matrix(num_classes=num_classes,
                                            label=test_data[1].flatten(),
                                            predicted=predicted_y)
    result.add_record(svm_model, key=token, confusion_matrix=confusion_matrix)
    return predicted_y
示例#8
0
def training_and_test(token, train_data, test_data, num_classes, result):
    """Train and test

    Args:
        token (:obj:`str`): token representing this run
        train_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of training feature and label
        test_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of testing feature and label
        num_classes (:obj:`int`): Number of classes
        result (:obj:`pyActLearn.performance.record.LearningResult`): LearningResult object to hold learning result
    """
    decision_tree = sklearn.tree.DecisionTreeClassifier(
        min_samples_leaf=4, min_samples_split=4
    )
    decision_tree.fit(train_data[0], train_data[1].flatten())
    # Test
    predicted_y = decision_tree.predict(test_data[0])
    predicted_proba = decision_tree.predict_proba(test_data[0])
    # Evaluate the Test and Store Result
    confusion_matrix = get_confusion_matrix(num_classes=num_classes,
                                            label=test_data[1].flatten(), predicted=predicted_y)
    result.add_record(decision_tree.get_params(), key=token, confusion_matrix=confusion_matrix)
    return predicted_y, predicted_proba
示例#9
0
def training_and_test(token, train_data, test_data, num_classes, result):
    """Train and test

    Args:
        token (:obj:`str`): token representing this run
        train_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of training feature and label
        test_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of testing feature and label
        num_classes (:obj:`int`): Number of classes
        result (:obj:`pyActLearn.performance.record.LearningResult`): LearningResult object to hold learning result
    """
    decision_tree = DecisionTree(train_data[0].shape[1],
                                 num_classes,
                                 log_level=logging.WARNING)
    decision_tree.build(train_data[0], train_data[1].flatten())
    # Test
    predicted_y = decision_tree.classify(test_data[0])
    # Evaluate the Test and Store Result
    confusion_matrix = get_confusion_matrix(num_classes=num_classes,
                                            label=test_data[1].flatten(),
                                            predicted=predicted_y)
    result.add_record(decision_tree.export_to_dict(),
                      key=token,
                      confusion_matrix=confusion_matrix)
    return predicted_y
示例#10
0
def training_and_test(token, train_data, test_data, num_classes, result):
    """Train and test

    Args:
        token (:obj:`str`): token representing this run
        train_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of training feature and label
        test_data (:obj:`tuple` of :obj:`numpy.array`): Tuple of testing feature and label
        num_classes (:obj:`int`): Number of classes
        result (:obj:`pyActLearn.performance.record.LearningResult`): LearningResult object to hold learning result
    """
    decision_tree = sklearn.tree.DecisionTreeClassifier(min_samples_leaf=4,
                                                        min_samples_split=4)
    decision_tree.fit(train_data[0], train_data[1].flatten())
    # Test
    predicted_y = decision_tree.predict(test_data[0])
    predicted_proba = decision_tree.predict_proba(test_data[0])
    # Evaluate the Test and Store Result
    confusion_matrix = get_confusion_matrix(num_classes=num_classes,
                                            label=test_data[1].flatten(),
                                            predicted=predicted_y)
    result.add_record(decision_tree.get_params(),
                      key=token,
                      confusion_matrix=confusion_matrix)
    return predicted_y, predicted_proba