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()
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
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
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()
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)
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)
def main(): train_data, _, _, _ = data.load_all_data_from_zip('a2digits.zip', 'data', shuffle=False) plot_means(train_data)
''' 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)