You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
miner/frontend/pages/clustering:_dbscan.py

30 lines
908 B

import streamlit as st
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
import numpy as np
st.header("Clustering: dbscan")
if "data" in st.session_state:
data = st.session_state.data
with st.form("my_form"):
data_name = st.multiselect("Data Name",data.select_dtypes(include="number").columns, max_selections=2)
eps = st.slider("eps", min_value=0.0, max_value=1.0,value=0.5,step=0.01)
min_samples = st.number_input("min_samples",step=1,min_value=1,value=5)
st.form_submit_button('launch')
if len(data_name) == 2:
x = data[data_name].to_numpy()
dbscan = DBSCAN(eps=eps, min_samples=min_samples)
y_dbscan = dbscan.fit_predict(x)
fig, ax = plt.subplots(figsize=(12,8))
plt.scatter(x[:, 0], x[:, 1], c=y_dbscan, s=50, cmap='viridis')
st.pyplot(fig)
else:
st.error("file not loaded")