kris-123 commited on
Commit
bb227d7
·
1 Parent(s): 4aefecb

Add parameter selection

Browse files
Files changed (1) hide show
  1. app.py +45 -36
app.py CHANGED
@@ -1,42 +1,51 @@
1
- import gradio as gr
2
-
3
- def greet(name):
4
- return "Hello " + name + "!!"
5
-
6
- iface = gr.Interface(fn=greet, inputs="text", outputs="text")
7
- iface.launch()
8
-
9
  from sklearn.datasets import make_circles
10
  from sklearn.model_selection import train_test_split
 
 
11
 
12
  X, y = make_circles(n_samples=1_000, factor=0.3, noise=0.05, random_state=0)
13
  X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)
14
 
15
- from sklearn.decomposition import PCA, KernelPCA
16
-
17
- pca = PCA(n_components=2)
18
- kernel_pca = KernelPCA(
19
- n_components=None, kernel="rbf", gamma=10, fit_inverse_transform=True, alpha=0.1
20
- )
21
-
22
- X_test_pca = pca.fit(X_train).transform(X_test)
23
- X_test_kernel_pca = kernel_pca.fit(X_train).transform(X_test)
24
-
25
- fig, (orig_data_ax, pca_proj_ax, kernel_pca_proj_ax) = plt.subplots(
26
- ncols=3, figsize=(14, 4)
27
- )
28
-
29
- orig_data_ax.scatter(X_test[:, 0], X_test[:, 1], c=y_test)
30
- orig_data_ax.set_ylabel("Feature #1")
31
- orig_data_ax.set_xlabel("Feature #0")
32
- orig_data_ax.set_title("Testing data")
33
-
34
- pca_proj_ax.scatter(X_test_pca[:, 0], X_test_pca[:, 1], c=y_test)
35
- pca_proj_ax.set_ylabel("Principal component #1")
36
- pca_proj_ax.set_xlabel("Principal component #0")
37
- pca_proj_ax.set_title("Projection of testing data\n using PCA")
38
-
39
- kernel_pca_proj_ax.scatter(X_test_kernel_pca[:, 0], X_test_kernel_pca[:, 1], c=y_test)
40
- kernel_pca_proj_ax.set_ylabel("Principal component #1")
41
- kernel_pca_proj_ax.set_xlabel("Principal component #0")
42
- _ = kernel_pca_proj_ax.set_title("Projection of testing data\n using KernelPCA")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  from sklearn.datasets import make_circles
2
  from sklearn.model_selection import train_test_split
3
+ from sklearn.decomposition import PCA, KernelPCA
4
+ import gradio as gr
5
 
6
  X, y = make_circles(n_samples=1_000, factor=0.3, noise=0.05, random_state=0)
7
  X_train, X_test, y_train, y_test = train_test_split(X, y, stratify=y, random_state=0)
8
 
9
+ def fit_plot(n_comp, gamma, alpha)
10
+
11
+ pca = PCA(n_components=n_comp)
12
+ kernel_pca = KernelPCA(
13
+ n_components=None, kernel="rbf", gamma=gamma, fit_inverse_transform=True, alpha=alpha
14
+ )
15
+
16
+ X_test_pca = pca.fit(X_train).transform(X_test)
17
+ X_test_kernel_pca = kernel_pca.fit(X_train).transform(X_test)
18
+
19
+ fig1, (orig_data_ax, pca_proj_ax, kernel_pca_proj_ax) = plt.subplots(
20
+ ncols=3, figsize=(14, 4)
21
+ )
22
+
23
+ orig_data_ax.scatter(X_test[:, 0], X_test[:, 1], c=y_test)
24
+ orig_data_ax.set_ylabel("Feature #1")
25
+ orig_data_ax.set_xlabel("Feature #0")
26
+ orig_data_ax.set_title("Testing data")
27
+
28
+ pca_proj_ax.scatter(X_test_pca[:, 0], X_test_pca[:, 1], c=y_test)
29
+ pca_proj_ax.set_ylabel("Principal component #1")
30
+ pca_proj_ax.set_xlabel("Principal component #0")
31
+ pca_proj_ax.set_title("Projection of testing data\n using PCA")
32
+
33
+ kernel_pca_proj_ax.scatter(X_test_kernel_pca[:, 0], X_test_kernel_pca[:, 1], c=y_test)
34
+ kernel_pca_proj_ax.set_ylabel("Principal component #1")
35
+ kernel_pca_proj_ax.set_xlabel("Principal component #0")
36
+ _ = kernel_pca_proj_ax.set_title("Projection of testing data\n using KernelPCA")
37
+
38
+ return fig1
39
+
40
+
41
+ with gr.Blocks() as demo:
42
+ gr.Markdown("## PCA vs Kernel PCA")
43
+ gr.Markdown("Demo is based on the [Kernel PCA](https://scikit-learn.org/stable/auto_examples/decomposition/plot_kernel_pca.html#sphx-glr-auto-examples-decomposition-plot-kernel-pca-py")
44
+ with gr.Row():
45
+ p1 = gr.Slider(0, 10, label="Number of PCs", value=2, step=1)
46
+ p2 = gr.Slider(0, 10, label="Kernel coefficient", value=2, step=1e-3)
47
+ p3 = gr.Slider(0, 1, label="Hyperparameter for ridge regression", value=0.1, step=1e-3)
48
+ btn = gr.Button(value="Submit")
49
+ btn.click(plot_multi_tree, inputs= [p1,p2,p3], outputs= gr.Plot(label='Projecting data with PCA and Kernel PCA') )
50
+
51
+ demo.launch()