JUNGU commited on
Commit
d992ae8
·
1 Parent(s): 3d5ba14

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +44 -0
app.py ADDED
@@ -0,0 +1,44 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import numpy as np
3
+ import matplotlib.pyplot as plt
4
+ from sklearn.datasets import make_blobs
5
+ from sklearn.cluster import KMeans
6
+
7
+ def generate_data(n_samples=300):
8
+ data, _ = make_blobs(n_samples=n_samples, centers=4, cluster_std=1.0, random_state=42)
9
+ return data
10
+
11
+ def plot_clusters(data, k):
12
+ kmeans = KMeans(n_clusters=k)
13
+ y_kmeans = kmeans.fit_predict(data)
14
+
15
+ plt.scatter(data[:, 0], data[:, 1], c=y_kmeans, s=50, cmap='viridis')
16
+ centers = kmeans.cluster_centers_
17
+ plt.scatter(centers[:, 0], centers[:, 1], c='red', s=200, alpha=0.75, marker='X')
18
+ plt.title(f'K-means Clustering with k={k}')
19
+ plt.xlabel('Feature 1')
20
+ plt.ylabel('Feature 2')
21
+ return plt
22
+
23
+ def main():
24
+ st.title("K-means Clustering Simulator")
25
+
26
+ st.write("This is a simple simulator to visualize how k-means clustering works.")
27
+
28
+ data = generate_data()
29
+
30
+ st.write("Here is the sample data without clustering:")
31
+ plt.scatter(data[:, 0], data[:, 1], s=50, cmap='viridis')
32
+ plt.title('Sample Data')
33
+ plt.xlabel('Feature 1')
34
+ plt.ylabel('Feature 2')
35
+ st.pyplot()
36
+
37
+ k = st.slider("Select the number of clusters (k)", 1, 10, 4)
38
+ st.write(f"You selected k={k}")
39
+
40
+ plt = plot_clusters(data, k)
41
+ st.pyplot()
42
+
43
+ if __name__ == '__main__':
44
+ main()