Beispiel #1
0
def run_experiment2(filename):
    training_data = common.init_data(common.constants.TRAINING_SIZE,
                                     common.constants.DATA_DIM + 1)
    test_data = common.init_data(common.constants.TEST_SIZE,
                                 common.constants.DATA_DIM + 1)
    gold_data = [0 for x in range(common.constants.TEST_SIZE)]

    print("Linear Classifier : Dataset 1")
    #generating data should be hidden from students!
    read_data(training_data, test_data, gold_data, filename)
    #this is one of the two student functions
    student_code.part_two_classifier(training_data, test_data)
    #part 1 grading

    error = 0
    for i in range(common.constants.TEST_SIZE):
        if (test_data[i][common.constants.DATA_DIM] != gold_data[i]):
            error += 1

    print("Incorrect classificattions is " + str(error) + " out of " +
          str(common.constants.TEST_SIZE))

    success = True

    if (error <= float(common.constants.TEST_SIZE) * .05):
        print("(" + bcolors.GREEN + "SUCCESS" + bcolors.NORMAL + ")")
    else:
        success = False
        print("(" + bcolors.RED + "FAIL" + bcolors.NORMAL + ") maximum " +
              str(float(common.constants.TEST_SIZE) * .05))

    print
    return success
Beispiel #2
0
def part_two_classifier(data_train, data_test):
    # PUT YOUR CODE HERE
    # Access the training data using "data_train[i][j]"
    # Training data contains 3 cols per row: X in
    # index 0, Y in index 1 and Class in index 2
    # Access the test data using "data_test[i][j]"
    # Test data contains 2 cols per row: X in
    # index 0 and Y in index 1, and a blank space in index 2
    # to be filled with class
    # The class value could be a 0 or a 8

    w = [[0, 0] for x in range(10)]
    all_labeled = False
    c = common.init_data(common.constants.TRAINING_SIZE, 1)
    p = common.init_data(common.constants.TRAINING_SIZE, 1)

    while all_labeled != True:
        i = 0

        # print(i)
        for row in data_train:

            # print(i)
            # print(f"data: {row}, weight: {w}")
            c[i] = multi_classify_train(row, w)
            # print(f"class = {c}")
            if c[i] != row[2]:
                w[c[i]][0] -= (row[0]) * (1 / 100)
                w[c[i]][1] -= (row[1]) * (1 / 100)

                w[int(row[2])][0] += (row[0]) * (1 / 100)
                w[int(row[2])][1] += (row[1]) * (1 / 100)

            i += 1

        # print(f"checking trained labelling")

        for i in range(len(data_train)):
            p[i] = data_train[i][2]

        if check_all_labels(c, p):
            print(f"all classes are labeled correctly")
            all_labeled = True
    i = 0
    for row in data_test:
        data_test[i][2] = multi_classify_train(row, w)
        i += 1

    return