From 63659da7d80a0a4caeb74d7ede73a349788e22d9 Mon Sep 17 00:00:00 2001 From: mhjensen Date: Thu, 24 Oct 2019 13:59:10 +0200 Subject: [PATCH] added some examples --- doc/pub/DimRed/html/._DimRed-bs000.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs001.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs002.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs003.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs004.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs005.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs006.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs007.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs008.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs009.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs010.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs011.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs012.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs013.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs014.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs015.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs016.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs017.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs018.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs019.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs020.html | 28 ++++--- doc/pub/DimRed/html/._DimRed-bs021.html | 27 +++--- doc/pub/DimRed/html/._DimRed-bs022.html | 27 +++--- doc/pub/DimRed/html/._DimRed-bs023.html | 30 +++---- doc/pub/DimRed/html/._DimRed-bs024.html | 82 +++++++++++-------- doc/pub/DimRed/html/._DimRed-bs025.html | 57 +++++++++---- doc/pub/DimRed/html/._DimRed-bs026.html | 43 +++++----- doc/pub/DimRed/html/._DimRed-bs027.html | 51 +++++------- doc/pub/DimRed/html/._DimRed-bs028.html | 57 +++++++++---- doc/pub/DimRed/html/._DimRed-bs029.html | 46 +++++------ doc/pub/DimRed/html/._DimRed-bs030.html | 12 +-- doc/pub/DimRed/html/DimRed-bs.html | 28 ++++--- doc/pub/DimRed/html/DimRed-reveal.html | 57 +++++++++++-- doc/pub/DimRed/html/DimRed-solarized.html | 69 ++++++++++++---- doc/pub/DimRed/html/DimRed.html | 69 ++++++++++++---- doc/pub/DimRed/ipynb/DimRed.ipynb | 57 ++++++++++++- doc/pub/DimRed/ipynb/ipynb-DimRed-src.tar.gz | Bin 191 -> 191 bytes doc/pub/DimRed/pdf/DimRed-minted.pdf | Bin 253120 -> 253275 bytes doc/src/DimRed/DimRed.do.txt | 40 ++++++++- doc/src/DimRed/PCAcancer.py | 10 ++- 40 files changed, 830 insertions(+), 520 deletions(-) diff --git a/doc/pub/DimRed/html/._DimRed-bs000.html b/doc/pub/DimRed/html/._DimRed-bs000.html index 396bd951a..bc9ba42c9 100644 --- a/doc/pub/DimRed/html/._DimRed-bs000.html +++ b/doc/pub/DimRed/html/._DimRed-bs000.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -225,7 +227,7 @@ MathJax.Hub.Config({
  • 9
  • 10
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs001.html b/doc/pub/DimRed/html/._DimRed-bs001.html index d9043ef27..5eacb11b3 100644 --- a/doc/pub/DimRed/html/._DimRed-bs001.html +++ b/doc/pub/DimRed/html/._DimRed-bs001.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -225,7 +227,7 @@ data.
  • 10
  • 11
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs002.html b/doc/pub/DimRed/html/._DimRed-bs002.html index cd7af24e6..1a1f68938 100644 --- a/doc/pub/DimRed/html/._DimRed-bs002.html +++ b/doc/pub/DimRed/html/._DimRed-bs002.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -224,7 +226,7 @@ ensures that all features are exactly between \( 0 \) and \( 1 \). The
  • 11
  • 12
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs003.html b/doc/pub/DimRed/html/._DimRed-bs003.html index 8da86d618..2d3bfbf9a 100644 --- a/doc/pub/DimRed/html/._DimRed-bs003.html +++ b/doc/pub/DimRed/html/._DimRed-bs003.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -227,7 +229,7 @@ techniques.
  • 12
  • 13
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs004.html b/doc/pub/DimRed/html/._DimRed-bs004.html index e8c8765cf..32a4b3df2 100644 --- a/doc/pub/DimRed/html/._DimRed-bs004.html +++ b/doc/pub/DimRed/html/._DimRed-bs004.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -302,7 +304,7 @@ svm.fit(X_train_scaled, y_train)
  • 13
  • 14
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs005.html b/doc/pub/DimRed/html/._DimRed-bs005.html index 4a94d8952..0f389a6c6 100644 --- a/doc/pub/DimRed/html/._DimRed-bs005.html +++ b/doc/pub/DimRed/html/._DimRed-bs005.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -252,7 +254,7 @@ svm.fit(X_train_scaled, y_train)
  • 14
  • 15
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs006.html b/doc/pub/DimRed/html/._DimRed-bs006.html index 6a971e73c..d5e29d62d 100644 --- a/doc/pub/DimRed/html/._DimRed-bs006.html +++ b/doc/pub/DimRed/html/._DimRed-bs006.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -231,7 +233,7 @@ logreg.fit(X_train_scaled, y_train)
  • 15
  • 16
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs007.html b/doc/pub/DimRed/html/._DimRed-bs007.html index 42caa2901..9a71aec08 100644 --- a/doc/pub/DimRed/html/._DimRed-bs007.html +++ b/doc/pub/DimRed/html/._DimRed-bs007.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -286,7 +288,7 @@ applications.
  • 16
  • 17
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs008.html b/doc/pub/DimRed/html/._DimRed-bs008.html index e21955283..c2a86cade 100644 --- a/doc/pub/DimRed/html/._DimRed-bs008.html +++ b/doc/pub/DimRed/html/._DimRed-bs008.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -216,7 +218,7 @@ We have a data set defined by a design/feature matrix \( \boldsymbol{X} \) (see
  • 17
  • 18
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs009.html b/doc/pub/DimRed/html/._DimRed-bs009.html index d59b62820..710178b2e 100644 --- a/doc/pub/DimRed/html/._DimRed-bs009.html +++ b/doc/pub/DimRed/html/._DimRed-bs009.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -265,7 +267,7 @@ In the above example this is the function we constructed using pandas.
  • 18
  • 19
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs010.html b/doc/pub/DimRed/html/._DimRed-bs010.html index 0499b414b..126d5627c 100644 --- a/doc/pub/DimRed/html/._DimRed-bs010.html +++ b/doc/pub/DimRed/html/._DimRed-bs010.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -260,7 +262,7 @@ $$
  • 19
  • 20
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs011.html b/doc/pub/DimRed/html/._DimRed-bs011.html index 997227329..0b8212479 100644 --- a/doc/pub/DimRed/html/._DimRed-bs011.html +++ b/doc/pub/DimRed/html/._DimRed-bs011.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -248,7 +250,7 @@ C = np.c
  • 20
  • 21
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs012.html b/doc/pub/DimRed/html/._DimRed-bs012.html index 2c5be19cc..b8c4a9bf3 100644 --- a/doc/pub/DimRed/html/._DimRed-bs012.html +++ b/doc/pub/DimRed/html/._DimRed-bs012.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -250,7 +252,7 @@ The above procedure with numpy can be made more compact if we use pand
  • 21
  • 22
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs013.html b/doc/pub/DimRed/html/._DimRed-bs013.html index 14ec6ffb6..3e0982c2d 100644 --- a/doc/pub/DimRed/html/._DimRed-bs013.html +++ b/doc/pub/DimRed/html/._DimRed-bs013.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -232,7 +234,7 @@ We expand this model to the Franke function discussed above.
  • 22
  • 23
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs014.html b/doc/pub/DimRed/html/._DimRed-bs014.html index a95f8dbbd..77882c670 100644 --- a/doc/pub/DimRed/html/._DimRed-bs014.html +++ b/doc/pub/DimRed/html/._DimRed-bs014.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -268,7 +270,7 @@ matrix.
  • 23
  • 24
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs015.html b/doc/pub/DimRed/html/._DimRed-bs015.html index e66cf4e66..2339a6d61 100644 --- a/doc/pub/DimRed/html/._DimRed-bs015.html +++ b/doc/pub/DimRed/html/._DimRed-bs015.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -248,7 +250,7 @@ It is easy to generalize this to a matrix \( \boldsymbol{X}\in {\mathbb{R}}^{n\t
  • 24
  • 25
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs016.html b/doc/pub/DimRed/html/._DimRed-bs016.html index 3ed9f1660..c1988b0b0 100644 --- a/doc/pub/DimRed/html/._DimRed-bs016.html +++ b/doc/pub/DimRed/html/._DimRed-bs016.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -256,7 +258,7 @@ features/predictors.
  • 25
  • 26
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs017.html b/doc/pub/DimRed/html/._DimRed-bs017.html index 4ab4a0339..73aecf9a2 100644 --- a/doc/pub/DimRed/html/._DimRed-bs017.html +++ b/doc/pub/DimRed/html/._DimRed-bs017.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -239,7 +241,7 @@ After this we ask ourselves how do we prove the link between the maximum varianc
  • 26
  • 27
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs018.html b/doc/pub/DimRed/html/._DimRed-bs018.html index c29620553..95d449567 100644 --- a/doc/pub/DimRed/html/._DimRed-bs018.html +++ b/doc/pub/DimRed/html/._DimRed-bs018.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -226,7 +228,7 @@ The PCA theorem states that minimizing the above reconstruction error correspond
  • 27
  • 28
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs019.html b/doc/pub/DimRed/html/._DimRed-bs019.html index 63ee497dc..a6e981422 100644 --- a/doc/pub/DimRed/html/._DimRed-bs019.html +++ b/doc/pub/DimRed/html/._DimRed-bs019.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -228,7 +230,7 @@ where the vectors on the rhs are known.
  • 28
  • 29
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs020.html b/doc/pub/DimRed/html/._DimRed-bs020.html index b41d42150..d1e36909d 100644 --- a/doc/pub/DimRed/html/._DimRed-bs020.html +++ b/doc/pub/DimRed/html/._DimRed-bs020.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -242,6 +244,8 @@ We are almost there, we have obtained a relation between minimizing the reconstr
  • 28
  • 29
  • 30
  • +
  • ...
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs021.html b/doc/pub/DimRed/html/._DimRed-bs021.html index 5a04c8700..ee37e1a02 100644 --- a/doc/pub/DimRed/html/._DimRed-bs021.html +++ b/doc/pub/DimRed/html/._DimRed-bs021.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -254,6 +256,7 @@ chapter 12.4 and discussion therein.
  • 28
  • 29
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs022.html b/doc/pub/DimRed/html/._DimRed-bs022.html index d613cfc50..b4a7a67e2 100644 --- a/doc/pub/DimRed/html/._DimRed-bs022.html +++ b/doc/pub/DimRed/html/._DimRed-bs022.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -258,6 +260,7 @@ X2D = X_centered28
  • 29
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs023.html b/doc/pub/DimRed/html/._DimRed-bs023.html index 51348ffde..dbef737d6 100644 --- a/doc/pub/DimRed/html/._DimRed-bs023.html +++ b/doc/pub/DimRed/html/._DimRed-bs023.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -209,8 +211,7 @@ principal component is equal to

    Another very useful piece of information is the explained variance ratio of each principal component, available via the \( explained\_variance\_ratio \) variable. It indicates the proportion of the dataset’s -variance that lies along the axis of each principal component. -More material to come here. +variance that lies along the axis of each principal component.

    @@ -234,6 +235,7 @@ More material to come here.

  • 28
  • 29
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs024.html b/doc/pub/DimRed/html/._DimRed-bs024.html index c9ffe037b..7d840e6fb 100644 --- a/doc/pub/DimRed/html/._DimRed-bs024.html +++ b/doc/pub/DimRed/html/._DimRed-bs024.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -182,32 +184,43 @@ MathJax.Hub.Config({ -

    More on the PCA

    - -

    -Instead of arbitrarily choosing the number of dimensions to reduce down to, it is generally preferable to -choose the number of dimensions that add up to a sufficiently large portion of the variance (e.g., 95%). -Unless, of course, you are reducing dimensionality for data visualization — in that case you will -generally want to reduce the dimensionality down to 2 or 3. -The following code computes PCA without reducing dimensionality, then computes the minimum number -of dimensions required to preserve 95% of the training set’s variance: +

    Back to the Cancer Data

    +We can now repeat the above but applied to real data, in this case our breat cancer data.

    -

    pca = PCA()
    -pca.fit(X)
    -cumsum = np.cumsum(pca.explained_variance_ratio_)
    -d = np.argmax(cumsum >= 0.95) + 1
    -
    -

    -You could then set \( n\_components=d \) and run PCA again. However, there is a much better option: instead -of specifying the number of principal components you want to preserve, you can set \( n\_components \) to be -a float between 0.0 and 1.0, indicating the ratio of variance you wish to preserve: -

    +

    import matplotlib.pyplot as plt
    +import numpy as np
    +from sklearn.model_selection import  train_test_split 
    +from sklearn.datasets import load_breast_cancer
    +from sklearn.linear_model import LogisticRegression
    +cancer = load_breast_cancer()
     
    -
    -
    pca = PCA(n_components=0.95)
    -X_reduced = pca.fit_transform(X)
    +X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0)
    +print(X_train.shape)
    +print(X_test.shape)
    +
    +logreg = LogisticRegression()
    +logreg.fit(X_train, y_train)
    +print("Test set accuracy from Logistic Regression: {:.2f}".format(logreg.score(X_test,y_test)))
    +
    +from sklearn.preprocessing import MinMaxScaler, StandardScaler
    +scaler = StandardScaler()
    +scaler.fit(X_train)
    +X_train_scaled = scaler.transform(X_train)
    +X_test_scaled = scaler.transform(X_test)
    +
    +logreg.fit(X_train_scaled, y_train)
    +print("Test set accuracy scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test)))
    +
    +#thereafter we do a PCA with Scikit-learn
    +from sklearn.decomposition import PCA
    +pca = PCA(n_components = 2)
    +X2D_train = pca.fit_transform(X_train_scaled)
    +X2D_test = pca.fit_transform(X_test_scaled)
    +
    +logreg.fit(X2D_train,y_train)
    +print("Test set accuracy scaled data: {:.2f}".format(logreg.score(X2D_test,y_test)))
     

    @@ -230,6 +243,7 @@ X_reduced = pca

  • 28
  • 29
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs025.html b/doc/pub/DimRed/html/._DimRed-bs025.html index dc43d79f6..213172eef 100644 --- a/doc/pub/DimRed/html/._DimRed-bs025.html +++ b/doc/pub/DimRed/html/._DimRed-bs025.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -182,15 +184,33 @@ MathJax.Hub.Config({ -

    Incremental PCA

    +

    More on the PCA

    -One problem with the preceding implementation of PCA is that it requires the whole training set to fit in -memory in order for the SVD algorithm to run. Fortunately, Incremental PCA (IPCA) algorithms have -been developed: you can split the training set into mini-batches and feed an IPCA algorithm one minibatch -at a time. This is useful for large training sets, and also to apply PCA online (i.e., on the fly, as new -instances arrive). +Instead of arbitrarily choosing the number of dimensions to reduce down to, it is generally preferable to +choose the number of dimensions that add up to a sufficiently large portion of the variance (e.g., 95%). +Unless, of course, you are reducing dimensionality for data visualization — in that case you will +generally want to reduce the dimensionality down to 2 or 3. +The following code computes PCA without reducing dimensionality, then computes the minimum number +of dimensions required to preserve 95% of the training set’s variance: +

    + +

    pca = PCA()
    +pca.fit(X)
    +cumsum = np.cumsum(pca.explained_variance_ratio_)
    +d = np.argmax(cumsum >= 0.95) + 1
    +
    +

    +You could then set \( n\_components=d \) and run PCA again. However, there is a much better option: instead +of specifying the number of principal components you want to preserve, you can set \( n\_components \) to be +a float between 0.0 and 1.0, indicating the ratio of variance you wish to preserve: +

    + + +

    pca = PCA(n_components=0.95)
    +X_reduced = pca.fit_transform(X)
    +

    @@ -211,6 +231,7 @@ instances arrive).

  • 28
  • 29
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs026.html b/doc/pub/DimRed/html/._DimRed-bs026.html index a4e1b973d..e3a14c74a 100644 --- a/doc/pub/DimRed/html/._DimRed-bs026.html +++ b/doc/pub/DimRed/html/._DimRed-bs026.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -182,18 +184,14 @@ MathJax.Hub.Config({ -

    Randomized PCA

    +

    Incremental PCA

    -Scikit-Learn offers yet another option to perform PCA, called Randomized PCA. This is a stochastic -algorithm that quickly finds an approximation of the first d principal components. Its computational -complexity is \( O(m \times d^2)+O(d^3) \), instead of \( O(m \times n^2) + O(n^3) \), so it is dramatically faster than the -previous algorithms when \( d \) is much smaller than \( n \). - -

    -

    - - +One problem with the preceding implementation of PCA is that it requires the whole training set to fit in +memory in order for the SVD algorithm to run. Fortunately, Incremental PCA (IPCA) algorithms have +been developed: you can split the training set into mini-batches and feed an IPCA algorithm one minibatch +at a time. This is useful for large training sets, and also to apply PCA online (i.e., on the fly, as new +instances arrive).

    @@ -214,6 +212,7 @@ previous algorithms when \( d \) is much smaller than \( n \).

  • 28
  • 29
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs027.html b/doc/pub/DimRed/html/._DimRed-bs027.html index 20413ce9d..e5767b817 100644 --- a/doc/pub/DimRed/html/._DimRed-bs027.html +++ b/doc/pub/DimRed/html/._DimRed-bs027.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -182,28 +184,14 @@ MathJax.Hub.Config({ -

    Kernel PCA

    -
    -
    -

    +

    Randomized PCA

    -The kernel trick is a mathematical technique that implicitly maps instances into a -very high-dimensional space (called the feature space), enabling nonlinear classification and regression -with Support Vector Machines. Recall that a linear decision boundary in the high-dimensional feature -space corresponds to a complex nonlinear decision boundary in the original space. -It turns out that the same trick can be applied to PCA, making it possible to perform complex nonlinear -projections for dimensionality reduction. This is called Kernel PCA (kPCA). It is often good at -preserving clusters of instances after projection, or sometimes even unrolling datasets that lie close to a -twisted manifold. -For example, the following code uses Scikit-Learn’s KernelPCA class to perform kPCA with an -

    +Scikit-Learn offers yet another option to perform PCA, called Randomized PCA. This is a stochastic +algorithm that quickly finds an approximation of the first d principal components. Its computational +complexity is \( O(m \times d^2)+O(d^3) \), instead of \( O(m \times n^2) + O(n^3) \), so it is dramatically faster than the +previous algorithms when \( d \) is much smaller than \( n \). - -

    from sklearn.decomposition import KernelPCA
    -rbf_pca = KernelPCA(n_components = 2, kernel="rbf", gamma=0.04)
    -X_reduced = rbf_pca.fit_transform(X)
    -

    @@ -227,6 +215,7 @@ X_reduced = rbf_pca28
  • 29
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs028.html b/doc/pub/DimRed/html/._DimRed-bs028.html index a221d679b..9cbb7aa9f 100644 --- a/doc/pub/DimRed/html/._DimRed-bs028.html +++ b/doc/pub/DimRed/html/._DimRed-bs028.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -182,14 +184,32 @@ MathJax.Hub.Config({ -

    LLE

    +

    Kernel PCA

    +
    +
    +

    -Locally Linear Embedding (LLE) is another very powerful nonlinear dimensionality reduction -(NLDR) technique. It is a Manifold Learning technique that does not rely on projections like the previous -algorithms. In a nutshell, LLE works by first measuring how each training instance linearly relates to its -closest neighbors (c.n.), and then looking for a low-dimensional representation of the training set where -these local relationships are best preserved (more details shortly). +The kernel trick is a mathematical technique that implicitly maps instances into a +very high-dimensional space (called the feature space), enabling nonlinear classification and regression +with Support Vector Machines. Recall that a linear decision boundary in the high-dimensional feature +space corresponds to a complex nonlinear decision boundary in the original space. +It turns out that the same trick can be applied to PCA, making it possible to perform complex nonlinear +projections for dimensionality reduction. This is called Kernel PCA (kPCA). It is often good at +preserving clusters of instances after projection, or sometimes even unrolling datasets that lie close to a +twisted manifold. +For example, the following code uses Scikit-Learn’s KernelPCA class to perform kPCA with an +

    + + +

    from sklearn.decomposition import KernelPCA
    +rbf_pca = KernelPCA(n_components = 2, kernel="rbf", gamma=0.04)
    +X_reduced = rbf_pca.fit_transform(X)
    +
    +

    +

    +
    +

    @@ -208,6 +228,7 @@ these local relationships are best preserved (more details shortly).

  • 28
  • 29
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/._DimRed-bs029.html b/doc/pub/DimRed/html/._DimRed-bs029.html index b53f979ac..bf5d8c9b0 100644 --- a/doc/pub/DimRed/html/._DimRed-bs029.html +++ b/doc/pub/DimRed/html/._DimRed-bs029.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -182,22 +184,16 @@ MathJax.Hub.Config({ -

    Other techniques

    +

    LLE

    -There are many other dimensionality reduction techniques, several of which are available in Scikit-Learn. +Locally Linear Embedding (LLE) is another very powerful nonlinear dimensionality reduction +(NLDR) technique. It is a Manifold Learning technique that does not rely on projections like the previous +algorithms. In a nutshell, LLE works by first measuring how each training instance linearly relates to its +closest neighbors (c.n.), and then looking for a low-dimensional representation of the training set where +these local relationships are best preserved (more details shortly).

    -Here are some of the most popular: - -

      -
    • Multidimensional Scaling (MDS) reduces dimensionality while trying to preserve the distances between the instances.
    • -
    • Isomap creates a graph by connecting each instance to its nearest neighbors, then reduces dimensionality while trying to preserve the geodesic distances between the instances.
    • -
    • t-Distributed Stochastic Neighbor Embedding (t-SNE) reduces dimensionality while trying to keep similar instances close and dissimilar instances apart. It is mostly used for visualization, in particular to visualize clusters of instances in high-dimensional space (e.g., to visualize the MNIST images in 2D).
    • -
    • Linear Discriminant Analysis (LDA) is actually a classification algorithm, but during training it learns the most discriminative axes between the classes, and these axes can then be used to define a hyperplane onto which to project the data. The benefit is that the projection will keep classes as far apart as possible, so LDA is a good technique to reduce dimensionality before running another classification algorithm such as a Support Vector Machine (SVM) classifier discussed in the SVM lectures.
    • -
    - -

      @@ -213,6 +209,8 @@ Here are some of the most popular:
    • 28
    • 29
    • 30
    • +
    • 31
    • +
    • »
    diff --git a/doc/pub/DimRed/html/._DimRed-bs030.html b/doc/pub/DimRed/html/._DimRed-bs030.html index 0e96ca026..aa8394e93 100644 --- a/doc/pub/DimRed/html/._DimRed-bs030.html +++ b/doc/pub/DimRed/html/._DimRed-bs030.html @@ -93,9 +93,9 @@ Automatically generated HTML file from DocOnce source ('Proof of the PCA Theorem', 2, None, '___sec18'), ('PCA Proof continued', 2, None, '___sec19'), ('The final step', 2, None, '___sec20'), - ('PCA and Scikit-Learn Functionality', 2, None, '___sec21'), - ('Principal Component Analysis', 2, None, '___sec22'), - ('PCA and scikit-learn', 2, None, '___sec23'), + ('Principal Component Analysis', 2, None, '___sec21'), + ('PCA and scikit-learn', 2, None, '___sec22'), + ('Back to the Cancer Data', 2, None, '___sec23'), ('More on the PCA', 2, None, '___sec24'), ('Incremental PCA', 2, None, '___sec25'), ('Randomized PCA', 2, None, '___sec26'), @@ -160,9 +160,9 @@ MathJax.Hub.Config({
  • Proof of the PCA Theorem
  • PCA Proof continued
  • The final step
  • -
  • PCA and Scikit-Learn Functionality
  • -
  • Principal Component Analysis
  • -
  • PCA and scikit-learn
  • +
  • Principal Component Analysis
  • +
  • PCA and scikit-learn
  • +
  • Back to the Cancer Data
  • More on the PCA
  • Incremental PCA
  • Randomized PCA
  • diff --git a/doc/pub/DimRed/html/DimRed-bs.html b/doc/pub/DimRed/html/DimRed-bs.html index 396bd951a..bc9ba42c9 100644 --- a/doc/pub/DimRed/html/DimRed-bs.html +++ b/doc/pub/DimRed/html/DimRed-bs.html @@ -95,12 +95,13 @@ Automatically generated HTML file from DocOnce source ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -161,12 +162,13 @@ MathJax.Hub.Config({
  • The final step
  • Principal Component Analysis
  • PCA and scikit-learn
  • -
  • More on the PCA
  • -
  • Incremental PCA
  • -
  • Randomized PCA
  • -
  • Kernel PCA
  • -
  • LLE
  • -
  • Other techniques
  • +
  • Back to the Cancer Data
  • +
  • More on the PCA
  • +
  • Incremental PCA
  • +
  • Randomized PCA
  • +
  • Kernel PCA
  • +
  • LLE
  • +
  • Other techniques
  • @@ -225,7 +227,7 @@ MathJax.Hub.Config({
  • 9
  • 10
  • ...
  • -
  • 30
  • +
  • 31
  • »
  • diff --git a/doc/pub/DimRed/html/DimRed-reveal.html b/doc/pub/DimRed/html/DimRed-reveal.html index be7cae712..b92b94473 100644 --- a/doc/pub/DimRed/html/DimRed-reveal.html +++ b/doc/pub/DimRed/html/DimRed-reveal.html @@ -1232,13 +1232,54 @@ principal component is equal to

    Another very useful piece of information is the explained variance ratio of each principal component, available via the \( explained\_variance\_ratio \) variable. It indicates the proportion of the dataset’s -variance that lies along the axis of each principal component. -More material to come here. +variance that lies along the axis of each principal component.

    -

    More on the PCA

    +

    Back to the Cancer Data

    +We can now repeat the above but applied to real data, in this case our breat cancer data. +

    + + +

    import matplotlib.pyplot as plt
    +import numpy as np
    +from sklearn.model_selection import  train_test_split 
    +from sklearn.datasets import load_breast_cancer
    +from sklearn.linear_model import LogisticRegression
    +cancer = load_breast_cancer()
    +
    +X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0)
    +print(X_train.shape)
    +print(X_test.shape)
    +
    +logreg = LogisticRegression()
    +logreg.fit(X_train, y_train)
    +print("Test set accuracy from Logistic Regression: {:.2f}".format(logreg.score(X_test,y_test)))
    +
    +from sklearn.preprocessing import MinMaxScaler, StandardScaler
    +scaler = StandardScaler()
    +scaler.fit(X_train)
    +X_train_scaled = scaler.transform(X_train)
    +X_test_scaled = scaler.transform(X_test)
    +
    +logreg.fit(X_train_scaled, y_train)
    +print("Test set accuracy scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test)))
    +
    +#thereafter we do a PCA with Scikit-learn
    +from sklearn.decomposition import PCA
    +pca = PCA(n_components = 2)
    +X2D_train = pca.fit_transform(X_train_scaled)
    +X2D_test = pca.fit_transform(X_test_scaled)
    +
    +logreg.fit(X2D_train,y_train)
    +print("Test set accuracy scaled data: {:.2f}".format(logreg.score(X2D_test,y_test)))
    +
    +
    + + +
    +

    More on the PCA

    Instead of arbitrarily choosing the number of dimensions to reduce down to, it is generally preferable to @@ -1269,7 +1310,7 @@ X_reduced = pca.fit_transform(X)

    -

    Incremental PCA

    +

    Incremental PCA

    One problem with the preceding implementation of PCA is that it requires the whole training set to fit in @@ -1281,7 +1322,7 @@ instances arrive).

    -

    Randomized PCA

    +

    Randomized PCA

    Scikit-Learn offers yet another option to perform PCA, called Randomized PCA. This is a stochastic @@ -1295,7 +1336,7 @@ previous algorithms when \( d \) is much smaller than \( n \).

    -

    Kernel PCA

    +

    Kernel PCA

    @@ -1321,7 +1362,7 @@ X_reduced = rbf_pca.fit_transform(X)

    -

    LLE

    +

    LLE

    Locally Linear Embedding (LLE) is another very powerful nonlinear dimensionality reduction @@ -1333,7 +1374,7 @@ these local relationships are best preserved (more details shortly).

    -

    Other techniques

    +

    Other techniques

    There are many other dimensionality reduction techniques, several of which are available in Scikit-Learn. diff --git a/doc/pub/DimRed/html/DimRed-solarized.html b/doc/pub/DimRed/html/DimRed-solarized.html index 0925346bb..2933d3b74 100644 --- a/doc/pub/DimRed/html/DimRed-solarized.html +++ b/doc/pub/DimRed/html/DimRed-solarized.html @@ -115,12 +115,13 @@ div { text-align: justify; text-justify: inter-word; } ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -1170,13 +1171,53 @@ principal component is equal to

    Another very useful piece of information is the explained variance ratio of each principal component, available via the \( explained\_variance\_ratio \) variable. It indicates the proportion of the dataset’s -variance that lies along the axis of each principal component. -More material to come here. +variance that lies along the axis of each principal component.











    -

    More on the PCA

    +

    Back to the Cancer Data

    +We can now repeat the above but applied to real data, in this case our breat cancer data. +

    + + +

    import matplotlib.pyplot as plt
    +import numpy as np
    +from sklearn.model_selection import  train_test_split 
    +from sklearn.datasets import load_breast_cancer
    +from sklearn.linear_model import LogisticRegression
    +cancer = load_breast_cancer()
    +
    +X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0)
    +print(X_train.shape)
    +print(X_test.shape)
    +
    +logreg = LogisticRegression()
    +logreg.fit(X_train, y_train)
    +print("Test set accuracy from Logistic Regression: {:.2f}".format(logreg.score(X_test,y_test)))
    +
    +from sklearn.preprocessing import MinMaxScaler, StandardScaler
    +scaler = StandardScaler()
    +scaler.fit(X_train)
    +X_train_scaled = scaler.transform(X_train)
    +X_test_scaled = scaler.transform(X_test)
    +
    +logreg.fit(X_train_scaled, y_train)
    +print("Test set accuracy scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test)))
    +
    +#thereafter we do a PCA with Scikit-learn
    +from sklearn.decomposition import PCA
    +pca = PCA(n_components = 2)
    +X2D_train = pca.fit_transform(X_train_scaled)
    +X2D_test = pca.fit_transform(X_test_scaled)
    +
    +logreg.fit(X2D_train,y_train)
    +print("Test set accuracy scaled data: {:.2f}".format(logreg.score(X2D_test,y_test)))
    +
    +

    +









    + +

    More on the PCA

    Instead of arbitrarily choosing the number of dimensions to reduce down to, it is generally preferable to @@ -1206,7 +1247,7 @@ X_reduced = pca.fit_transform(X)











    -

    Incremental PCA

    +

    Incremental PCA

    One problem with the preceding implementation of PCA is that it requires the whole training set to fit in @@ -1218,7 +1259,7 @@ instances arrive).











    -

    Randomized PCA

    +

    Randomized PCA

    Scikit-Learn offers yet another option to perform PCA, called Randomized PCA. This is a stochastic @@ -1233,7 +1274,7 @@ previous algorithms when \( d \) is much smaller than \( n \).











    -

    Kernel PCA

    +

    Kernel PCA

    @@ -1262,7 +1303,7 @@ X_reduced = rbf_pca.fit_transform(X)











    -

    LLE

    +

    LLE

    Locally Linear Embedding (LLE) is another very powerful nonlinear dimensionality reduction @@ -1274,7 +1315,7 @@ these local relationships are best preserved (more details shortly).











    -

    Other techniques

    +

    Other techniques

    There are many other dimensionality reduction techniques, several of which are available in Scikit-Learn. diff --git a/doc/pub/DimRed/html/DimRed.html b/doc/pub/DimRed/html/DimRed.html index 60f22749e..d6f859567 100644 --- a/doc/pub/DimRed/html/DimRed.html +++ b/doc/pub/DimRed/html/DimRed.html @@ -120,12 +120,13 @@ div { text-align: justify; text-justify: inter-word; } ('The final step', 2, None, '___sec20'), ('Principal Component Analysis', 2, None, '___sec21'), ('PCA and scikit-learn', 2, None, '___sec22'), - ('More on the PCA', 2, None, '___sec23'), - ('Incremental PCA', 2, None, '___sec24'), - ('Randomized PCA', 2, None, '___sec25'), - ('Kernel PCA', 2, None, '___sec26'), - ('LLE', 2, None, '___sec27'), - ('Other techniques', 2, None, '___sec28')]} + ('Back to the Cancer Data', 2, None, '___sec23'), + ('More on the PCA', 2, None, '___sec24'), + ('Incremental PCA', 2, None, '___sec25'), + ('Randomized PCA', 2, None, '___sec26'), + ('Kernel PCA', 2, None, '___sec27'), + ('LLE', 2, None, '___sec28'), + ('Other techniques', 2, None, '___sec29')]} end of tocinfo --> @@ -1175,13 +1176,53 @@ principal component is equal to

    Another very useful piece of information is the explained variance ratio of each principal component, available via the \( explained\_variance\_ratio \) variable. It indicates the proportion of the dataset’s -variance that lies along the axis of each principal component. -More material to come here. +variance that lies along the axis of each principal component.











    -

    More on the PCA

    +

    Back to the Cancer Data

    +We can now repeat the above but applied to real data, in this case our breat cancer data. +

    + + +

    import matplotlib.pyplot as plt
    +import numpy as np
    +from sklearn.model_selection import  train_test_split 
    +from sklearn.datasets import load_breast_cancer
    +from sklearn.linear_model import LogisticRegression
    +cancer = load_breast_cancer()
    +
    +X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0)
    +print(X_train.shape)
    +print(X_test.shape)
    +
    +logreg = LogisticRegression()
    +logreg.fit(X_train, y_train)
    +print("Test set accuracy from Logistic Regression: {:.2f}".format(logreg.score(X_test,y_test)))
    +
    +from sklearn.preprocessing import MinMaxScaler, StandardScaler
    +scaler = StandardScaler()
    +scaler.fit(X_train)
    +X_train_scaled = scaler.transform(X_train)
    +X_test_scaled = scaler.transform(X_test)
    +
    +logreg.fit(X_train_scaled, y_train)
    +print("Test set accuracy scaled data: {:.2f}".format(logreg.score(X_test_scaled,y_test)))
    +
    +#thereafter we do a PCA with Scikit-learn
    +from sklearn.decomposition import PCA
    +pca = PCA(n_components = 2)
    +X2D_train = pca.fit_transform(X_train_scaled)
    +X2D_test = pca.fit_transform(X_test_scaled)
    +
    +logreg.fit(X2D_train,y_train)
    +print("Test set accuracy scaled data: {:.2f}".format(logreg.score(X2D_test,y_test)))
    +
    +

    +









    + +

    More on the PCA

    Instead of arbitrarily choosing the number of dimensions to reduce down to, it is generally preferable to @@ -1211,7 +1252,7 @@ X_reduced = pca











    -

    Incremental PCA

    +

    Incremental PCA

    One problem with the preceding implementation of PCA is that it requires the whole training set to fit in @@ -1223,7 +1264,7 @@ instances arrive).











    -

    Randomized PCA

    +

    Randomized PCA

    Scikit-Learn offers yet another option to perform PCA, called Randomized PCA. This is a stochastic @@ -1238,7 +1279,7 @@ previous algorithms when \( d \) is much smaller than \( n \).











    -

    Kernel PCA

    +

    Kernel PCA

    @@ -1267,7 +1308,7 @@ X_reduced = rbf_pcaLLE +

    LLE

    Locally Linear Embedding (LLE) is another very powerful nonlinear dimensionality reduction @@ -1279,7 +1320,7 @@ these local relationships are best preserved (more details shortly).











    -

    Other techniques

    +

    Other techniques

    There are many other dimensionality reduction techniques, several of which are available in Scikit-Learn. diff --git a/doc/pub/DimRed/ipynb/DimRed.ipynb b/doc/pub/DimRed/ipynb/DimRed.ipynb index c76867fcf..d42b6364e 100644 --- a/doc/pub/DimRed/ipynb/DimRed.ipynb +++ b/doc/pub/DimRed/ipynb/DimRed.ipynb @@ -1431,8 +1431,57 @@ "Another very useful piece of information is the explained variance ratio of each principal component,\n", "available via the $explained\\_variance\\_ratio$ variable. It indicates the proportion of the dataset’s\n", "variance that lies along the axis of each principal component. \n", - "More material to come here.\n", "\n", + "## Back to the Cancer Data\n", + "We can now repeat the above but applied to real data, in this case our breat cancer data." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "from sklearn.model_selection import train_test_split \n", + "from sklearn.datasets import load_breast_cancer\n", + "from sklearn.linear_model import LogisticRegression\n", + "cancer = load_breast_cancer()\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0)\n", + "print(X_train.shape)\n", + "print(X_test.shape)\n", + "\n", + "logreg = LogisticRegression()\n", + "logreg.fit(X_train, y_train)\n", + "print(\"Test set accuracy from Logistic Regression: {:.2f}\".format(logreg.score(X_test,y_test)))\n", + "\n", + "from sklearn.preprocessing import MinMaxScaler, StandardScaler\n", + "scaler = StandardScaler()\n", + "scaler.fit(X_train)\n", + "X_train_scaled = scaler.transform(X_train)\n", + "X_test_scaled = scaler.transform(X_test)\n", + "\n", + "logreg.fit(X_train_scaled, y_train)\n", + "print(\"Test set accuracy scaled data: {:.2f}\".format(logreg.score(X_test_scaled,y_test)))\n", + "\n", + "#thereafter we do a PCA with Scikit-learn\n", + "from sklearn.decomposition import PCA\n", + "pca = PCA(n_components = 2)\n", + "X2D_train = pca.fit_transform(X_train_scaled)\n", + "X2D_test = pca.fit_transform(X_test_scaled)\n", + "\n", + "logreg.fit(X2D_train,y_train)\n", + "print(\"Test set accuracy scaled data: {:.2f}\".format(logreg.score(X2D_test,y_test)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ "## More on the PCA\n", "\n", "Instead of arbitrarily choosing the number of dimensions to reduce down to, it is generally preferable to\n", @@ -1445,7 +1494,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -1468,7 +1517,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 17, "metadata": { "collapsed": false }, @@ -1515,7 +1564,7 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 18, "metadata": { "collapsed": false }, diff --git a/doc/pub/DimRed/ipynb/ipynb-DimRed-src.tar.gz b/doc/pub/DimRed/ipynb/ipynb-DimRed-src.tar.gz index 3b0146384d3d443cbd22ca6ed4e6e5c15c42ddca..2b7fcb7fc2372bf54a61b9182d6690c94f3cec9c 100644 GIT binary patch literal 191 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 delta 14800 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