def main():
    train_data, train_labels, test_data, test_labels = data.load_all_data_from_zip('hw5digits.zip','hw5')
    
    means = compute_mean_mles(train_data, train_labels)
    covariances = compute_sigma_mles(train_data, train_labels, means)
    
    print("############## For train_data #############")
    predicted_train_labels = classify_data(train_data, means, covariances)
    print("Accuracy = ", accuracy_score(train_labels, predicted_train_labels))
    print("Average conditional likelihood = ", avg_conditional_likelihood(train_data, train_labels, means, covariances))
    
    print("############## For test_data #############")
    predicted_test_labels = classify_data(test_data, means, covariances)
    print("Accuracy = ", accuracy_score(test_labels, predicted_test_labels))
    print("Average conditional likelihood = ", avg_conditional_likelihood(test_data, test_labels, means, covariances))
    
    fig=plt.figure(figsize=(8, 8))
    columns = 2
    rows = 5
    for i in range(0,10):
        cov = covariances[i,:,:] 
        w, v = np.linalg.eig(cov)
        eig_vals_sorted = np.sort(w)
        eig_vecs_sorted = v[:, w.argsort()]
        #Computing the leading eigenvectors (largest eigenvalue) for each class covariance matrix
        temp_image = eig_vecs_sorted[:,63].reshape(8,8)
        #print("temp_image:", temp_image)
        fig.add_subplot(rows, columns, i+1)
        plt.imshow(temp_image)
    plt.show()
Пример #2
0
def svmmain() -> svm.LinearSVC:
    train_data, train_labels, test_data, test_labels = data.load_all_data_from_zip(
        'a2digits.zip', 'data')
    clf = svm.LinearSVC()
    clf.fit(train_data, train_labels)
    print("accuracy for SVM on test set is ",
          (clf.predict(test_data) == test_labels).sum() / 4000)
    return clf
Пример #3
0
def process_data():
    train_data, train_labels, test_data, test_labels = data.load_all_data_from_zip(
        'a3digits.zip', 'data')
    train_labels, test_labels = label_to_oneht(train_labels), label_to_oneht(
        test_labels)

    train_data, test_data = torch.from_numpy(train_data), torch.from_numpy(
        test_data)
    train_data, train_labels, test_data, test_labels = Variable(train_data), Variable(train_labels) \
        , Variable(test_data), Variable(test_labels)
    return train_data, train_labels, test_data, test_labels
Пример #4
0
def main():
    train_data, train_labels, test_data, test_labels = \
        data.load_all_data_from_zip('hw4digits.zip', 'data')

    # Fit the model
    means = compute_mean_mles(train_data, train_labels)
    covariances = compute_sigma_mles(train_data, train_labels)

    # Evaluation
    # 2(a)
    train_avg_cond = \
        avg_conditional_likelihood(train_data, train_labels, means, covariances)
    test_avg_cond = \
        avg_conditional_likelihood(test_data, test_labels, means, covariances)
    print("The avg_conditional_likelihood for TRAIN: \n "
          "{}".format(train_avg_cond))
    print("The avg_conditional_likelihood for TEST: \n "
          "{}".format(test_avg_cond))

    # 2(b) find predictions of training data and test data,
    # and find the accurarcy
    train_predictions = classify_data(train_data, means, covariances)
    test_predictions = classify_data(test_data, means, covariances)
    num_correct_train = np.count_nonzero(train_predictions - train_labels == 0)
    num_correct_test = np.count_nonzero(test_predictions - test_labels == 0)

    print("train accuracy: ", num_correct_train / len(train_data))
    print("test accuracy: ", num_correct_test / len(test_data))

    # 2(c) Compute leading eigenvectors for each class cov matrix
    # plot them side by side as 8 by 8 images
    for k in range(10):
        w, v = np.linalg.eig(covariances[k])
        max_w_index = np.where(w == max(w))
        leading_v = v[:, max_w_index]
        # print("The leading vector for k={} is: \n {}".format(k, leading_v))

        plt.figure()
        im = plt.imshow(leading_v.reshape(8, 8), cmap='gray')
        plt.savefig("{}.png".format(k))
        plt.show()
Пример #5
0
Here you should load the data and plot
the means for each of the digit classes.
'''

import data
import numpy as np
# Import pyplot - plt.imshow is useful!
import matplotlib.pyplot as plt


def plot_means(train_data, train_labels):
    means = []
    for i in range(0, 10):
        i_digits = data.get_digits_by_label(train_data, train_labels, i)
        # Compute mean of class i
        sum_digit = np.sum(i_digits, axis=0)
        mean_vecotr = sum_digit / len(i_digits)
        mean = mean_vecotr.reshape((8, 8))
        means.append(mean)

    # Plot all means on same axis
    all_concat = np.concatenate(means, 1)
    plt.imshow(all_concat, cmap='gray')
    plt.show()


if __name__ == '__main__':
    train_data, train_labels, _, _ = data.load_all_data_from_zip(
        'a3digits.zip', 'data')
    plot_means(train_data, train_labels)
Пример #6
0
import data
import numpy as np
# Import pyplot - plt.imshow is useful!
import matplotlib.pyplot as plt


def plot_means(train_data, train_labels):
    means = []
    for i in range(0, 10):
        i_digits = data.get_digits_by_label(train_data, train_labels, i)

        # Compute mean of class i
        column = []
        column = np.mean(i_digits, axis=0)
        means.append(np.reshape(column, (8, 8)))

    # Plot all means on same axis
    all_concat = np.concatenate(means, 1)
    plt.imshow(all_concat, cmap='gray')
    # for i in range(len(means)):
    #     plt.subplot(1,10,i+1)
    #     plt.imshow(means[i], cmap='gray')
    # plt.suptitle('Mean for digit 0-9')
    plt.show()


if __name__ == '__main__':
    train_data, train_labels, test_data, teste_labels = data.load_all_data_from_zip(
        'a2digits.zip', 'data')
    plot_means(train_data, train_labels)
def main():
    train_data, train_labels, _, _ = data.load_all_data_from_zip(
        'a2digits.zip', 'data')
    plot_means(train_data, train_labels)
Пример #8
0
def main():

    train_data, _, _, _ = data.load_all_data_from_zip('a2digits.zip',
                                                      'data',
                                                      shuffle=False)
    plot_means(train_data)
Пример #9
0
'''
Question 2.0 Skeleton Code

Here you should load the data and plot
the means for each of the digit classes.
'''

import data
import numpy as np
# Import pyplot - plt.imshow is useful!
import matplotlib.pyplot as plt

def plot_means(train_data, train_labels):
    means = []
    for i in range(0, 10):
        i_digits = data.get_digits_by_label(train_data, train_labels, i)
        # Compute mean of class i
        means.append(np.mean(i_digits, axis=0).reshape((8,8)))
        
    # Plot all means on same axis
    all_concat = np.concatenate(means, 1)
    plt.title("Means of Pixel Values for each Digit Class")
    plt.imshow(all_concat, cmap='gray')
    plt.show()

if __name__ == '__main__':
    train_data, train_labels, _, _ = data.load_all_data_from_zip('a2digits.zip', 'data')
    plot_means(train_data, train_labels)