Spaces:
Running
Running
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg | |
| import tkinter as tk | |
| from tkinter import ttk | |
| from dataset_content import get_data_from_json | |
| from isolation_forest import apply_isolation_forest | |
| from oc_svm import apply_oc_svm | |
| def plot_data(num_dimensions): | |
| rng = np.random.RandomState(42) | |
| X = get_data_from_json() | |
| # Apply algorithm | |
| plotted_result = apply_isolation_forest(rng, X) if combo_box_alg.current() == 0 else apply_oc_svm(X) | |
| # Plotting | |
| fig, ax = plt.subplots(figsize=(10, 7), subplot_kw={'projection': '3d'} if num_dimensions == 3 else {}) | |
| if num_dimensions == 3: | |
| ax.scatter(X[:, 0], X[:, 1], X[:, 2], c=['red' if pred == -1 else 'blue' for pred in plotted_result], s=50) | |
| ax.set_xlabel("Distance travelled") | |
| ax.set_ylabel("Heartrate") | |
| ax.set_zlabel("Weight") | |
| else: | |
| x_axis = X[:, 0] | |
| y_axis = np.zeros_like(X[:, 0]) if num_dimensions == 1 else X[:, 1] | |
| ax.scatter(x_axis, y_axis, c=['red' if pred == -1 else 'blue' for pred in plotted_result], s=50) | |
| ax.set_xlabel("Distance travelled") | |
| ax.set_ylabel("Heartrate" if num_dimensions > 1 else "") | |
| plt.grid(True) | |
| return fig | |
| # Create the main window | |
| root = tk.Tk() | |
| root.title("Dimension Selector") | |
| def update_plot(event): | |
| num_dimensions = int(combo_box_dim.get()[0]) | |
| fig = plot_data(num_dimensions) | |
| canvas = FigureCanvasTkAgg(fig, master=root) | |
| canvas_widget = canvas.get_tk_widget() | |
| canvas_widget.grid(row=1, column=0, columnspan=4) | |
| canvas.draw() | |
| # Dimension selection | |
| combo_box_dim = ttk.Combobox(root, values=("1 Dimension", "2 Dimensions", "3 Dimensions"), state="readonly") | |
| combo_box_dim.grid(row=0, column=1, pady=10) | |
| combo_box_dim.current(2) | |
| combo_box_dim.bind("<<ComboboxSelected>>", update_plot) | |
| # Algorithm selection | |
| combo_box_alg = ttk.Combobox(root, values=("Isolation Forest", "One-Class Support Vector Machine"), state="readonly") | |
| combo_box_alg.grid(row=0, column=2, pady=10) | |
| combo_box_alg.current(0) | |
| combo_box_alg.bind("<<ComboboxSelected>>", update_plot) | |
| update_plot(None) | |
| root.mainloop() | |