コード例 #1
0
def main():
    num_classes = 3
    X, y = get_master_data()
    train_X, train_y, val_X, val_y, test_X, test_y = split_data(X, y)

    # hyperparams
    learning_rates = [1]
    reg_strengths = [0]
    num_iters = 5000

    best_model = None
    best_accuracy = -1

    results = {}

    for lr in learning_rates:
        for rs in reg_strengths:

            this_model = LinearClassifier(X.shape[1], num_classes)
            this_model.train(train_X, train_y, lr, rs, num_iters)
            y_pred = this_model.predict(val_X)
            val_accuracy = np.mean(y_pred == val_y)

            y_pred = this_model.predict(train_X)
            train_accuracy = np.mean(y_pred == train_y)
            print('This val accuracy: ' + str(val_accuracy))

            if (val_accuracy > best_accuracy):
                best_model = this_model
                best_accuracy = val_accuracy

            results[(lr, rs)] = train_accuracy, val_accuracy
            this_model.print_model()

    for lr, rs in sorted(results):
        train_accuracy, val_accuracy = results[(lr, rs)]
        print('lr %e reg %e train_accuracy %f val_accuracy %f' %
              (lr, rs, train_accuracy, val_accuracy))

    print(test_X[0])
    y_pred_test = best_model.predict(test_X)

    test_accuracy = np.mean(y_pred_test == test_y)

    print('This test accuracy: ' + str(test_accuracy))
    best_model.toFile('rowan_rest_grip_flex_linear_classifier_3_' +
                      str(int(test_accuracy * 100)) + 'p.csv')