From 1c0911a3d37e81db6f4931090d9caab1f5af471a Mon Sep 17 00:00:00 2001 From: mhjensen Date: Thu, 26 Dec 2019 19:20:42 +0100 Subject: [PATCH] corrected labels in dimred --- doc/pub/DimRed/html/._DimRed-bs018.html | 31 +++++++++---------- doc/pub/DimRed/html/DimRed-reveal.html | 31 +++++++++---------- doc/pub/DimRed/html/DimRed-solarized.html | 31 +++++++++---------- doc/pub/DimRed/html/DimRed.html | 31 +++++++++---------- doc/pub/DimRed/ipynb/DimRed.ipynb | 30 +++++++++--------- doc/pub/DimRed/ipynb/ipynb-DimRed-src.tar.gz | Bin 190 -> 190 bytes doc/pub/DimRed/pdf/DimRed-minted.pdf | Bin 259876 -> 259793 bytes doc/src/DimRed/DimRed.do.txt | 31 +++++++++---------- 8 files changed, 84 insertions(+), 101 deletions(-) diff --git a/doc/pub/DimRed/html/._DimRed-bs018.html b/doc/pub/DimRed/html/._DimRed-bs018.html index 0455b1a78..10609edc8 100644 --- a/doc/pub/DimRed/html/._DimRed-bs018.html +++ b/doc/pub/DimRed/html/._DimRed-bs018.html @@ -210,8 +210,8 @@ $$ \end{bmatrix} $$ -

-We will generate \( N = 1000 \) points \( X = \{ x_1, \ldots, x_N \} \) from +Note that the mean refers to each column of data. +We will generate \( n = 1000 \) points \( X = \{ x_1, \ldots, x_N \} \) from this distribution, and store them in the \( 1000 \times 2 \) matrix \( \boldsymbol{X} \).

@@ -220,13 +220,13 @@ The following Python code aids in setting up the data

-

N = 1000
+
n = 1000
 mean = (-1, 2)
 cov = [[4, 2], [2, 2]]
-X = np.random.multivariate_normal(mean, cov, N)
+X = np.random.multivariate_normal(mean, cov, n)
 

-Make a small Python code which plots the data. +Make thereafter a small Python code which plots the data. Note that the function multivariate returns also the covariance discussed above and that it is defined by dividing by \( n-1 \) instead of \( n \).

Now we are going to implement the PCA algorithm. We will break it down into sub-steps and across multiple cells. @@ -234,17 +234,17 @@ Now we are going to implement the PCA algorithm. We will break it down into sub-

Compute the sample mean and center the data

-The first step of PCA is to compute the sample mean of the data and use it to center the data. Recall the sample mean is +The first step of PCA is to compute the sample mean of the data and use it to center the data. Recall that the sample mean is $$ -\mu_N = \frac{1}{N} \sum_{i=1}^N x_i +\mu_n = \frac{1}{n} \sum_{i=1}^n x_i $$ -and the mean-centered data \( \bar{X} = \{ \bar{x}_1, \ldots, \bar{x}_N \} \) takes the form +and the mean-centered data \( \bar{X} = \{ \bar{x}_1, \ldots, \bar{x}_n \} \) takes the form $$ -\bar{x}_i = x_i - \mu_N +\bar{x}_i = x_i - \mu_n. $$ -When you are done with these steps, print out \( \mu_N \) to verify it is +When you are done with these steps, print out \( \mu_n \) to verify it is close to \( \mu \) and plot your mean centered data to verify it is centered at the origin! Compare your code with the functionality from Scikit-Learn discussed above. @@ -254,7 +254,7 @@ centered at the origin! Compare your code with the functionality from Scikit- Now we are going to use the mean centered data to compute the sample covariance of the data. Recall it is given by: $$ \begin{equation*} -\Sigma_N = \frac{1}{N-1} \sum_{i=1}^N \bar{x}_i^T \bar{x}_i = \frac{1}{N-1} \sum_{i=1}^N (x_i - \mu_N)^T (x_i - \mu_N) +\Sigma_n = \frac{1}{n-1} \sum_{i=1}^n \bar{x}_i^T \bar{x}_i = \frac{1}{n-1} \sum_{i=1}^n (x_i - \mu_n)^T (x_i - \mu_n) \end{equation*} $$ @@ -265,9 +265,9 @@ Compare the computed covariance with the answer given above.

Now we are ready to solve for the principal components! To do so we -diagonalize the sample covariance matrix \( \Sigma_N \). We can use the +diagonalize the sample covariance matrix \( \Sigma_n \). We can use the function np.linalg.eig to do so. It will return the eigenvalues and -eigenvectors of \( \Sigma_N \). Once you have these, carry out the +eigenvectors of \( \Sigma_n \). Once you have these, carry out the following tasks:

    @@ -279,7 +279,7 @@ following tasks: $$ \begin{equation*} -x_i \approx \tilde{x}_i := \mu_N + \langle x_i, v_0 \rangle v_0 +x_i \approx \tilde{x}_i := \mu_n + \langle x_i, v_0 \rangle v_0 \end{equation*} $$ @@ -293,9 +293,6 @@ Have the input be the data and have the output be the principal components and t

    Finally, try out your own PCA function with other data sets. -

    -After this we ask ourselves how do we prove the link between the maximum variance and the feature reduction. -

    diff --git a/doc/pub/DimRed/html/DimRed-reveal.html b/doc/pub/DimRed/html/DimRed-reveal.html index d75134efb..5b1cbcdce 100644 --- a/doc/pub/DimRed/html/DimRed-reveal.html +++ b/doc/pub/DimRed/html/DimRed-reveal.html @@ -999,8 +999,8 @@ $$ $$

     
    -

    -We will generate \( N = 1000 \) points \( X = \{ x_1, \ldots, x_N \} \) from +Note that the mean refers to each column of data. +We will generate \( n = 1000 \) points \( X = \{ x_1, \ldots, x_N \} \) from this distribution, and store them in the \( 1000 \times 2 \) matrix \( \boldsymbol{X} \).

    @@ -1009,13 +1009,13 @@ The following Python code aids in setting up the data

    -

    N = 1000
    +
    n = 1000
     mean = (-1, 2)
     cov = [[4, 2], [2, 2]]
    -X = np.random.multivariate_normal(mean, cov, N)
    +X = np.random.multivariate_normal(mean, cov, n)
     

    -Make a small Python code which plots the data. +Make thereafter a small Python code which plots the data. Note that the function multivariate returns also the covariance discussed above and that it is defined by dividing by \( n-1 \) instead of \( n \).

    Now we are going to implement the PCA algorithm. We will break it down into sub-steps and across multiple cells. @@ -1023,21 +1023,21 @@ Now we are going to implement the PCA algorithm. We will break it down into sub-

    Compute the sample mean and center the data

    -The first step of PCA is to compute the sample mean of the data and use it to center the data. Recall the sample mean is +The first step of PCA is to compute the sample mean of the data and use it to center the data. Recall that the sample mean is

     
    $$ -\mu_N = \frac{1}{N} \sum_{i=1}^N x_i +\mu_n = \frac{1}{n} \sum_{i=1}^n x_i $$

     
    -and the mean-centered data \( \bar{X} = \{ \bar{x}_1, \ldots, \bar{x}_N \} \) takes the form +and the mean-centered data \( \bar{X} = \{ \bar{x}_1, \ldots, \bar{x}_n \} \) takes the form

     
    $$ -\bar{x}_i = x_i - \mu_N +\bar{x}_i = x_i - \mu_n. $$

     
    -When you are done with these steps, print out \( \mu_N \) to verify it is +When you are done with these steps, print out \( \mu_n \) to verify it is close to \( \mu \) and plot your mean centered data to verify it is centered at the origin! Compare your code with the functionality from Scikit-Learn discussed above. @@ -1048,7 +1048,7 @@ Now we are going to use the mean centered data to compute the sample covariance

     
    $$ \begin{equation*} -\Sigma_N = \frac{1}{N-1} \sum_{i=1}^N \bar{x}_i^T \bar{x}_i = \frac{1}{N-1} \sum_{i=1}^N (x_i - \mu_N)^T (x_i - \mu_N) +\Sigma_n = \frac{1}{n-1} \sum_{i=1}^n \bar{x}_i^T \bar{x}_i = \frac{1}{n-1} \sum_{i=1}^n (x_i - \mu_n)^T (x_i - \mu_n) \end{equation*} $$

     
    @@ -1060,9 +1060,9 @@ Compare the computed covariance with the answer given above.

    Now we are ready to solve for the principal components! To do so we -diagonalize the sample covariance matrix \( \Sigma_N \). We can use the +diagonalize the sample covariance matrix \( \Sigma_n \). We can use the function np.linalg.eig to do so. It will return the eigenvalues and -eigenvectors of \( \Sigma_N \). Once you have these, carry out the +eigenvectors of \( \Sigma_n \). Once you have these, carry out the following tasks:

      @@ -1074,7 +1074,7 @@ following tasks:

       
      $$ \begin{equation*} -x_i \approx \tilde{x}_i := \mu_N + \langle x_i, v_0 \rangle v_0 +x_i \approx \tilde{x}_i := \mu_n + \langle x_i, v_0 \rangle v_0 \end{equation*} $$

       
      @@ -1088,9 +1088,6 @@ Have the input be the data and have the output be the principal components and t

      Finally, try out your own PCA function with other data sets. - -

      -After this we ask ourselves how do we prove the link between the maximum variance and the feature reduction. diff --git a/doc/pub/DimRed/html/DimRed-solarized.html b/doc/pub/DimRed/html/DimRed-solarized.html index 686a4c32d..44ddd27fa 100644 --- a/doc/pub/DimRed/html/DimRed-solarized.html +++ b/doc/pub/DimRed/html/DimRed-solarized.html @@ -974,8 +974,8 @@ $$ \end{bmatrix} $$ -

      -We will generate \( N = 1000 \) points \( X = \{ x_1, \ldots, x_N \} \) from +Note that the mean refers to each column of data. +We will generate \( n = 1000 \) points \( X = \{ x_1, \ldots, x_N \} \) from this distribution, and store them in the \( 1000 \times 2 \) matrix \( \boldsymbol{X} \).

      @@ -984,13 +984,13 @@ The following Python code aids in setting up the data

      -

      N = 1000
      +
      n = 1000
       mean = (-1, 2)
       cov = [[4, 2], [2, 2]]
      -X = np.random.multivariate_normal(mean, cov, N)
      +X = np.random.multivariate_normal(mean, cov, n)
       

      -Make a small Python code which plots the data. +Make thereafter a small Python code which plots the data. Note that the function multivariate returns also the covariance discussed above and that it is defined by dividing by \( n-1 \) instead of \( n \).

      Now we are going to implement the PCA algorithm. We will break it down into sub-steps and across multiple cells. @@ -998,17 +998,17 @@ Now we are going to implement the PCA algorithm. We will break it down into sub-

      Compute the sample mean and center the data

      -The first step of PCA is to compute the sample mean of the data and use it to center the data. Recall the sample mean is +The first step of PCA is to compute the sample mean of the data and use it to center the data. Recall that the sample mean is $$ -\mu_N = \frac{1}{N} \sum_{i=1}^N x_i +\mu_n = \frac{1}{n} \sum_{i=1}^n x_i $$ -and the mean-centered data \( \bar{X} = \{ \bar{x}_1, \ldots, \bar{x}_N \} \) takes the form +and the mean-centered data \( \bar{X} = \{ \bar{x}_1, \ldots, \bar{x}_n \} \) takes the form $$ -\bar{x}_i = x_i - \mu_N +\bar{x}_i = x_i - \mu_n. $$ -When you are done with these steps, print out \( \mu_N \) to verify it is +When you are done with these steps, print out \( \mu_n \) to verify it is close to \( \mu \) and plot your mean centered data to verify it is centered at the origin! Compare your code with the functionality from Scikit-Learn discussed above. @@ -1018,7 +1018,7 @@ centered at the origin! Compare your code with the functionality from Scikit- Now we are going to use the mean centered data to compute the sample covariance of the data. Recall it is given by: $$ \begin{equation*} -\Sigma_N = \frac{1}{N-1} \sum_{i=1}^N \bar{x}_i^T \bar{x}_i = \frac{1}{N-1} \sum_{i=1}^N (x_i - \mu_N)^T (x_i - \mu_N) +\Sigma_n = \frac{1}{n-1} \sum_{i=1}^n \bar{x}_i^T \bar{x}_i = \frac{1}{n-1} \sum_{i=1}^n (x_i - \mu_n)^T (x_i - \mu_n) \end{equation*} $$ @@ -1029,9 +1029,9 @@ Compare the computed covariance with the answer given above.

      Now we are ready to solve for the principal components! To do so we -diagonalize the sample covariance matrix \( \Sigma_N \). We can use the +diagonalize the sample covariance matrix \( \Sigma_n \). We can use the function np.linalg.eig to do so. It will return the eigenvalues and -eigenvectors of \( \Sigma_N \). Once you have these, carry out the +eigenvectors of \( \Sigma_n \). Once you have these, carry out the following tasks:

        @@ -1043,7 +1043,7 @@ following tasks: $$ \begin{equation*} -x_i \approx \tilde{x}_i := \mu_N + \langle x_i, v_0 \rangle v_0 +x_i \approx \tilde{x}_i := \mu_n + \langle x_i, v_0 \rangle v_0 \end{equation*} $$ @@ -1057,9 +1057,6 @@ Have the input be the data and have the output be the principal components and t

        Finally, try out your own PCA function with other data sets. -

        -After this we ask ourselves how do we prove the link between the maximum variance and the feature reduction. -











        diff --git a/doc/pub/DimRed/html/DimRed.html b/doc/pub/DimRed/html/DimRed.html index 7b1ba18c7..5be5508b6 100644 --- a/doc/pub/DimRed/html/DimRed.html +++ b/doc/pub/DimRed/html/DimRed.html @@ -979,8 +979,8 @@ $$ \end{bmatrix} $$ -

        -We will generate \( N = 1000 \) points \( X = \{ x_1, \ldots, x_N \} \) from +Note that the mean refers to each column of data. +We will generate \( n = 1000 \) points \( X = \{ x_1, \ldots, x_N \} \) from this distribution, and store them in the \( 1000 \times 2 \) matrix \( \boldsymbol{X} \).

        @@ -989,13 +989,13 @@ The following Python code aids in setting up the data

        -

        N = 1000
        +
        n = 1000
         mean = (-1, 2)
         cov = [[4, 2], [2, 2]]
        -X = np.random.multivariate_normal(mean, cov, N)
        +X = np.random.multivariate_normal(mean, cov, n)
         

        -Make a small Python code which plots the data. +Make thereafter a small Python code which plots the data. Note that the function multivariate returns also the covariance discussed above and that it is defined by dividing by \( n-1 \) instead of \( n \).

        Now we are going to implement the PCA algorithm. We will break it down into sub-steps and across multiple cells. @@ -1003,17 +1003,17 @@ Now we are going to implement the PCA algorithm. We will break it down into sub-

        Compute the sample mean and center the data

        -The first step of PCA is to compute the sample mean of the data and use it to center the data. Recall the sample mean is +The first step of PCA is to compute the sample mean of the data and use it to center the data. Recall that the sample mean is $$ -\mu_N = \frac{1}{N} \sum_{i=1}^N x_i +\mu_n = \frac{1}{n} \sum_{i=1}^n x_i $$ -and the mean-centered data \( \bar{X} = \{ \bar{x}_1, \ldots, \bar{x}_N \} \) takes the form +and the mean-centered data \( \bar{X} = \{ \bar{x}_1, \ldots, \bar{x}_n \} \) takes the form $$ -\bar{x}_i = x_i - \mu_N +\bar{x}_i = x_i - \mu_n. $$ -When you are done with these steps, print out \( \mu_N \) to verify it is +When you are done with these steps, print out \( \mu_n \) to verify it is close to \( \mu \) and plot your mean centered data to verify it is centered at the origin! Compare your code with the functionality from Scikit-Learn discussed above. @@ -1023,7 +1023,7 @@ centered at the origin! Compare your code with the functionality from Scikit- Now we are going to use the mean centered data to compute the sample covariance of the data. Recall it is given by: $$ \begin{equation*} -\Sigma_N = \frac{1}{N-1} \sum_{i=1}^N \bar{x}_i^T \bar{x}_i = \frac{1}{N-1} \sum_{i=1}^N (x_i - \mu_N)^T (x_i - \mu_N) +\Sigma_n = \frac{1}{n-1} \sum_{i=1}^n \bar{x}_i^T \bar{x}_i = \frac{1}{n-1} \sum_{i=1}^n (x_i - \mu_n)^T (x_i - \mu_n) \end{equation*} $$ @@ -1034,9 +1034,9 @@ Compare the computed covariance with the answer given above.

        Now we are ready to solve for the principal components! To do so we -diagonalize the sample covariance matrix \( \Sigma_N \). We can use the +diagonalize the sample covariance matrix \( \Sigma_n \). We can use the function np.linalg.eig to do so. It will return the eigenvalues and -eigenvectors of \( \Sigma_N \). Once you have these, carry out the +eigenvectors of \( \Sigma_n \). Once you have these, carry out the following tasks:

          @@ -1048,7 +1048,7 @@ following tasks: $$ \begin{equation*} -x_i \approx \tilde{x}_i := \mu_N + \langle x_i, v_0 \rangle v_0 +x_i \approx \tilde{x}_i := \mu_n + \langle x_i, v_0 \rangle v_0 \end{equation*} $$ @@ -1062,9 +1062,6 @@ Have the input be the data and have the output be the principal components and t

          Finally, try out your own PCA function with other data sets. -

          -After this we ask ourselves how do we prove the link between the maximum variance and the feature reduction. -











          diff --git a/doc/pub/DimRed/ipynb/DimRed.ipynb b/doc/pub/DimRed/ipynb/DimRed.ipynb index 82b60b04e..0c2ba7990 100644 --- a/doc/pub/DimRed/ipynb/DimRed.ipynb +++ b/doc/pub/DimRed/ipynb/DimRed.ipynb @@ -1070,7 +1070,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "We will generate $N = 1000$ points $X = \\{ x_1, \\ldots, x_N \\}$ from\n", + "Note that the mean refers to each column of data. \n", + "We will generate $n = 1000$ points $X = \\{ x_1, \\ldots, x_N \\}$ from\n", "this distribution, and store them in the $1000 \\times 2$ matrix $\\boldsymbol{X}$.\n", "\n", "The following Python code aids in setting up the data" @@ -1084,23 +1085,23 @@ }, "outputs": [], "source": [ - "N = 1000\n", + "n = 1000\n", "mean = (-1, 2)\n", "cov = [[4, 2], [2, 2]]\n", - "X = np.random.multivariate_normal(mean, cov, N)" + "X = np.random.multivariate_normal(mean, cov, n)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Make a small Python code which plots the data.\n", + "Make thereafter a small Python code which plots the data. Note that the function **multivariate** returns also the covariance discussed above and that it is defined by dividing by $n-1$ instead of $n$.\n", "\n", "Now we are going to implement the PCA algorithm. We will break it down into sub-steps and across multiple cells.\n", "\n", "### Compute the sample mean and center the data\n", "\n", - "The first step of PCA is to compute the sample mean of the data and use it to center the data. Recall the sample mean is" + "The first step of PCA is to compute the sample mean of the data and use it to center the data. Recall that the sample mean is" ] }, { @@ -1108,7 +1109,7 @@ "metadata": {}, "source": [ "$$\n", - "\\mu_N = \\frac{1}{N} \\sum_{i=1}^N x_i\n", + "\\mu_n = \\frac{1}{n} \\sum_{i=1}^n x_i\n", "$$" ] }, @@ -1116,7 +1117,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "and the mean-centered data $\\bar{X} = \\{ \\bar{x}_1, \\ldots, \\bar{x}_N \\}$ takes the form" + "and the mean-centered data $\\bar{X} = \\{ \\bar{x}_1, \\ldots, \\bar{x}_n \\}$ takes the form" ] }, { @@ -1124,7 +1125,7 @@ "metadata": {}, "source": [ "$$\n", - "\\bar{x}_i = x_i - \\mu_N\n", + "\\bar{x}_i = x_i - \\mu_n.\n", "$$" ] }, @@ -1132,7 +1133,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "When you are done with these steps, print out $\\mu_N$ to verify it is\n", + "When you are done with these steps, print out $\\mu_n$ to verify it is\n", "close to $\\mu$ and plot your mean centered data to verify it is\n", "centered at the origin! Compare your code with the functionality from **Scikit-Learn** discussed above.\n", "\n", @@ -1147,7 +1148,7 @@ "metadata": {}, "source": [ "$$\n", - "\\Sigma_N = \\frac{1}{N-1} \\sum_{i=1}^N \\bar{x}_i^T \\bar{x}_i = \\frac{1}{N-1} \\sum_{i=1}^N (x_i - \\mu_N)^T (x_i - \\mu_N)\n", + "\\Sigma_n = \\frac{1}{n-1} \\sum_{i=1}^n \\bar{x}_i^T \\bar{x}_i = \\frac{1}{n-1} \\sum_{i=1}^n (x_i - \\mu_n)^T (x_i - \\mu_n)\n", "$$" ] }, @@ -1162,9 +1163,9 @@ "### Diagonalize the sample covariance matrix to obtain the principal components\n", "\n", "Now we are ready to solve for the principal components! To do so we\n", - "diagonalize the sample covariance matrix $\\Sigma_N$. We can use the\n", + "diagonalize the sample covariance matrix $\\Sigma_n$. We can use the\n", "function **np.linalg.eig** to do so. It will return the eigenvalues and\n", - "eigenvectors of $\\Sigma_N$. Once you have these, carry out the\n", + "eigenvectors of $\\Sigma_n$. Once you have these, carry out the\n", "following tasks:\n", "\n", "* Compute the percentage of the total variance captured by the first principal component\n", @@ -1181,7 +1182,7 @@ "metadata": {}, "source": [ "$$\n", - "x_i \\approx \\tilde{x}_i := \\mu_N + \\langle x_i, v_0 \\rangle v_0\n", + "x_i \\approx \\tilde{x}_i := \\mu_n + \\langle x_i, v_0 \\rangle v_0\n", "$$" ] }, @@ -1198,9 +1199,6 @@ "Finally, try out your own PCA function with other data sets.\n", "\n", "\n", - "\n", - "After this we ask ourselves how do we prove the link between the maximum variance and the feature reduction.\n", - "\n", "## Classical PCA Theorem\n", "\n", "We assume now that we have a design matrix $\\boldsymbol{X}$ which has been centered as discussed above. For the sake of simplicity we skip the overline symbol. The matrix is defined in terms of the various column vectors $[\\boldsymbol{x}_0,\\boldsymbol{x}_1,\\dots, \\boldsymbol{x}_{p-1}]$\n", diff --git a/doc/pub/DimRed/ipynb/ipynb-DimRed-src.tar.gz b/doc/pub/DimRed/ipynb/ipynb-DimRed-src.tar.gz index 55bb01bf7c59b9a7601fc78711ecc4c1db61e57c..ba174a3e865f9de050c6824fa6fb88627c0cf86e 100644 GIT binary patch literal 190 zcmV;v073sBiwFSZ`2=171MSbz3W6{c24Js!it_}rHK*5sUUU(J^a7L3T;*olgnav^ zLR}TzNCf+Ce#ZG3=Tzmk*q4dByJ$5Cp)5^d$~>cUqRsN2VN3y&%x9kFzKAd(ltzHo zTj^!6jv2p7dlt$H^|t40P4nTOx;8n_mA s8i5hFK^g%}jlejUPHM%jac}g=u+Ap&ua60WAPBzp05xVzQ~(G70LboI-v9sr literal 190 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 z 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 delta 20880 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