Select Git revision
dragon_drop.py
-
Daniel Moix authoredDaniel Moix authored
callbacks.py 1.63 KiB
import numpy as np
import math
from utils.data_processing.synthetic import synthetic_dataset
from bokeh.io import curdoc, show, output_notebook
from bokeh.layouts import column, row
from bokeh.models import ColumnDataSource, Select, Slider, Plot, Scatter
from bokeh.palettes import Spectral6
from bokeh.plotting import figure
spectral = np.hstack([Spectral6] * 20)
n_clusters_p_class = 1
def update_samples_or_dataset(attrname,
old,
new,
# dataset_select,
# samples_slider,
# classes_slider,
# features_slider,
# inf_slider,
# source
):
global x, y
dataset = dataset_select.value
n_samples = int(samples_slider.value)
n_classes = int(classes_slider.value)
n_features = int(features_slider.value)
n_inf = int(inf_slider.value)
if n_inf > n_features:
n_features = n_inf
features_slider.update(value=n_inf)
if n_classes * n_clusters_p_class > 2**n_inf:
# n_inf = math.floor(math.sqrt(n_classes*n_clusters_p_class)) + n_classes % 2
n_inf = (math.ceil(math.log2(n_classes)))
n_features = n_inf
# print("this is v", n_inf)
inf_slider.update(value=n_inf)
features_slider.update(value=n_features)
x, y = synthetic_dataset(dataset, n_samples, n_inf, n_features, n_classes)
colors = [spectral[i] for i in y]
source.data = dict(colors=colors, x=x[:, 0], y=x[:, 1])