edited how data was loaded as it was for unknown reasons causing out of scope errors...
Browse files
app.py
CHANGED
|
@@ -23,56 +23,35 @@ import gradio as gr
|
|
| 23 |
from sklearn import datasets
|
| 24 |
from sklearn.decomposition import PCA
|
| 25 |
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
|
|
|
|
| 26 |
|
| 27 |
# load data
|
| 28 |
iris = datasets.load_iris()
|
| 29 |
|
| 30 |
-
|
| 31 |
-
|
| 32 |
target_names = iris.target_names
|
| 33 |
|
| 34 |
-
|
| 35 |
-
n_components=2,
|
| 36 |
-
n_features=4):
|
| 37 |
-
|
| 38 |
-
'''
|
| 39 |
-
Function to plot LDA and PCA clustering.
|
| 40 |
-
|
| 41 |
-
Parameters
|
| 42 |
-
----------
|
| 43 |
-
n_components : int, default=2
|
| 44 |
-
Number of components to keep.
|
| 45 |
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
Returns
|
| 50 |
-
-------
|
| 51 |
-
fig : matplotlib.pyplot.figure
|
| 52 |
-
Figure object.
|
| 53 |
-
'''
|
| 54 |
-
|
| 55 |
|
|
|
|
| 56 |
|
| 57 |
-
|
| 58 |
-
|
| 59 |
-
|
|
|
|
| 60 |
|
| 61 |
# fit PCA
|
| 62 |
-
pca = PCA(n_components=
|
| 63 |
X_r = pca.fit(X).transform(X)
|
| 64 |
-
|
| 65 |
# fit LDA
|
| 66 |
-
lda = LinearDiscriminantAnalysis(n_components=
|
| 67 |
X_r2 = lda.fit(X, y).transform(X)
|
| 68 |
-
|
| 69 |
-
# take first two components
|
| 70 |
-
X_r = X_r[:, :2]
|
| 71 |
-
X_r2 = X_r2[:, :2]
|
| 72 |
-
|
| 73 |
-
print(f"shape of X_r after: {X_r.shape}")
|
| 74 |
-
print(f"shape of X_r2 after: {X_r2.shape}")
|
| 75 |
-
|
| 76 |
# Percentage of variance explained for each components
|
| 77 |
print(
|
| 78 |
"explained variance ratio (first two components): %s"
|
|
@@ -119,15 +98,15 @@ with gr.Blocks(title=title) as demo:
|
|
| 119 |
gr.Markdown(" Different number of features and number of components affect how well the low rank space is recovered. <br>"
|
| 120 |
" Larger Depth trying to overfit and learn even the finner details of the data.<br>"
|
| 121 |
)
|
| 122 |
-
|
| 123 |
max_samples = len(iris.data)
|
| 124 |
-
with gr.Row():
|
| 125 |
-
n_samples = gr.Slider(value=100, minimum=
|
| 126 |
-
n_features = gr.Slider(value=4, minimum=2, maximum=4, step=1, label="n_features")
|
| 127 |
-
|
| 128 |
|
|
|
|
|
|
|
| 129 |
btn = gr.Button(value="Run")
|
| 130 |
-
btn.click(plot_lda_pca,inputs= [n_samples, n_features], outputs= gr.Plot(label='PCA vs LDA clustering') ) #
|
| 131 |
|
| 132 |
|
| 133 |
demo.launch()
|
|
|
|
| 23 |
from sklearn import datasets
|
| 24 |
from sklearn.decomposition import PCA
|
| 25 |
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
|
| 26 |
+
import numpy as np
|
| 27 |
|
| 28 |
# load data
|
| 29 |
iris = datasets.load_iris()
|
| 30 |
|
| 31 |
+
all_X = iris.data
|
| 32 |
+
all_y = iris.target
|
| 33 |
target_names = iris.target_names
|
| 34 |
|
| 35 |
+
# save models using skop
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 36 |
|
| 37 |
+
|
| 38 |
+
def plot_lda_pca(n_samples = 50, n_features = 4):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 39 |
|
| 40 |
+
# print(f"all X is: {all_X}")
|
| 41 |
|
| 42 |
+
idx = np.random.randint(0, len(iris.data), n_samples)
|
| 43 |
+
# sub-sample
|
| 44 |
+
X = all_X[idx, :n_features]
|
| 45 |
+
y = all_y[idx]
|
| 46 |
|
| 47 |
# fit PCA
|
| 48 |
+
pca = PCA(n_components=2)
|
| 49 |
X_r = pca.fit(X).transform(X)
|
| 50 |
+
|
| 51 |
# fit LDA
|
| 52 |
+
lda = LinearDiscriminantAnalysis(n_components=2)
|
| 53 |
X_r2 = lda.fit(X, y).transform(X)
|
| 54 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 55 |
# Percentage of variance explained for each components
|
| 56 |
print(
|
| 57 |
"explained variance ratio (first two components): %s"
|
|
|
|
| 98 |
gr.Markdown(" Different number of features and number of components affect how well the low rank space is recovered. <br>"
|
| 99 |
" Larger Depth trying to overfit and learn even the finner details of the data.<br>"
|
| 100 |
)
|
| 101 |
+
|
| 102 |
max_samples = len(iris.data)
|
| 103 |
+
with gr.Row():
|
| 104 |
+
n_samples = gr.Slider(value=100, minimum=10, maximum=max_samples, step=10, label="n_samples")
|
|
|
|
|
|
|
| 105 |
|
| 106 |
+
n_features = gr.Slider(value=2, minimum=2, maximum=4, step=1, label="n_features")
|
| 107 |
+
|
| 108 |
btn = gr.Button(value="Run")
|
| 109 |
+
btn.click(plot_lda_pca, inputs = [n_samples, n_features], outputs= gr.Plot(label='PCA vs LDA clustering') ) #
|
| 110 |
|
| 111 |
|
| 112 |
demo.launch()
|