cmpatino's picture
Init commit
e839c0e
raw
history blame
1.59 kB
import gradio as gr
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import MeanShift, estimate_bandwidth
from sklearn.datasets import make_blobs
def get_clusters_plot(n_blobs, cluster_std):
X, _, centers = make_blobs(
n_samples=10000, cluster_std=cluster_std, centers=n_blobs, return_centers=True
)
bandwidth = estimate_bandwidth(X, quantile=0.2, n_samples=500)
ms = MeanShift(bandwidth=bandwidth, bin_seeding=True)
ms.fit(X)
labels = ms.labels_
cluster_centers = ms.cluster_centers_
labels_unique = np.unique(labels)
n_clusters_ = len(labels_unique)
colors = ["#dede00", "#377eb8", "#f781bf"]
markers = ["x", "o", "^"]
fig = plt.figure()
for k, col in zip(range(n_clusters_), colors):
my_members = labels == k
cluster_center = cluster_centers[k]
plt.plot(X[my_members, 0], X[my_members, 1], markers[k], color=col)
plt.plot(
cluster_center[0],
cluster_center[1],
markers[k],
markerfacecolor=col,
markeredgecolor="k",
markersize=14,
)
return fig
demo = gr.Interface(
get_clusters_plot,
[
gr.Slider(
minimum=2, maximum=10, label="Number of clusters in data", step=1, value=3
),
gr.Slider(
minimum=0.1,
maximum=1,
label="Cluster standard deviation",
step=0.1,
value=0.6,
),
],
gr.Plot(),
allow_flagging="never",
)
if __name__ == "__main__":
demo.launch()