From ac35e842d8d6c68c1bb3278eddc317d38e8df423 Mon Sep 17 00:00:00 2001 From: Michael Zhang Date: Sat, 21 Oct 2023 16:42:47 -0500 Subject: [PATCH] prop var --- assignments/hwk02/Eigenfaces.m | 1 + assignments/hwk02/HW2.typ | 4 ++++ assignments/hwk02/ProportionOfVariance.m | 22 ++++++++++++++++------ assignments/hwk02/images/prop_var.png | Bin 0 -> 28798 bytes 4 files changed, 21 insertions(+), 6 deletions(-) create mode 100644 assignments/hwk02/images/prop_var.png diff --git a/assignments/hwk02/Eigenfaces.m b/assignments/hwk02/Eigenfaces.m index ea3649d..36f30a1 100644 --- a/assignments/hwk02/Eigenfaces.m +++ b/assignments/hwk02/Eigenfaces.m @@ -8,5 +8,6 @@ function [] = Eigenfaces(training_data, test_data) % TODO: perform PCA % TODO: show the first 5 eigenvectors (see homework for example) + imagesc(reshape(faces_data(i,1:end-1),32,30)') end % Function end \ No newline at end of file diff --git a/assignments/hwk02/HW2.typ b/assignments/hwk02/HW2.typ index 0544a83..d2085b0 100644 --- a/assignments/hwk02/HW2.typ +++ b/assignments/hwk02/HW2.typ @@ -37,4 +37,8 @@ b. #c[*(20 points)* Generate a plot of proportion of variance (see Figure 6.4 (b) in the main textbook) on the training data, and select the minimum number ($K$) of eigenvectors that explain at least 90% of the variance. Show both the plot and $K$ in the report. This can be accomplished by completing the _TODO_ headers in the `ProportionOfVariance.m` script. Project the training and test data to the $K$ principal components and run KNN on the projected data for $k = {1, 3, 5, 7}$. Print out the error rate on the test set. Implement your own version of and K-Nearest Neighbor classifier (KNN) for this problem. Classify each test point using a majority rule i.e., by choosing the most common class among the $k$ training points it is closest to. In the case where two classes are equally as frequent, perform a tie-breaker by choosing whichever class has on average a smaller distance to the test point. This can be accomplished by completing the _TODO_ comment headers in the `KNN.m` and `KNN_Error.m` scripts.] + #figure(image("images/prop_var.png")) + + I used $K = 41$. + c. #c[*(20 points)* Use the first $K = {10, 50, 100}$ principle components to approximate the first five images of the training set (first row of the data matrix) by projecting the centered data using the first $K$ principal components then "back project" (weighted sum of the components) to the original space and add the mean. For each $K$, plot the reconstructed image. This can be accomplished by completing the _TODO_ comment headers in the `Back_Project.m` script. Explain your observations in the report.] \ No newline at end of file diff --git a/assignments/hwk02/ProportionOfVariance.m b/assignments/hwk02/ProportionOfVariance.m index b5cbd76..1dee5ed 100644 --- a/assignments/hwk02/ProportionOfVariance.m +++ b/assignments/hwk02/ProportionOfVariance.m @@ -4,14 +4,24 @@ % variance explained. function [neigenvectors] = ProportionOfVariance(training_data) - % stack data - data = vertcat(training_data); + % stack data + data = vertcat(training_data); - % TODO: perform PCA + % perform PCA + [~,~,latent] = pca(data); - % TODO: compute proportion of variance explained + % compute proportion of variance explained + all_eigs = sum(latent); + prop_var = cumsum(latent) / all_eigs; - % TODO: show figure of proportion of variance explained where the x-axis is the number of eigenvectors and the y-axis is the percentage of + % show figure of proportion of variance explained where the x-axis is the number of eigenvectors and the y-axis is the percentage of % variance explained - + subplot(2,1,1); + plot(find(latent), latent); + + subplot(2,1,2); + plot(find(prop_var), prop_var); + + neigenvectors = find(prop_var > 0.9, 1); + end % Function end \ No newline at end of file diff --git a/assignments/hwk02/images/prop_var.png b/assignments/hwk02/images/prop_var.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9789965e4c98a10be1fae4b93d3f4411db67f2 GIT binary patch literal 28798 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 literal 0 HcmV?d00001