JUNGU commited on
Commit
d21e97b
·
1 Parent(s): 576d39f

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +54 -0
app.py ADDED
@@ -0,0 +1,54 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import pandas as pd
3
+ import numpy as np
4
+ import matplotlib.pyplot as plt
5
+ from sklearn.cluster import KMeans
6
+
7
+ # Generate the datasets
8
+ np.random.seed(42)
9
+ num_samples = 100
10
+ traffic_centers = [(20, 20), (80, 20)]
11
+ nature_centers = [(20, 80), (80, 80)]
12
+ population_centers = [(50, 50), (30, 30), (70, 70)]
13
+
14
+ traffic_data = [np.random.normal(center, 10, (num_samples, 2)) for center in traffic_centers]
15
+ nature_data = [np.random.normal(center, 10, (num_samples, 2)) for center in nature_centers]
16
+ population_data = [np.random.normal(center, 10, (num_samples, 2)) for center in population_centers]
17
+
18
+ traffic_df = pd.DataFrame(np.vstack(traffic_data), columns=["x", "y"])
19
+ nature_df = pd.DataFrame(np.vstack(nature_data), columns=["x", "y"])
20
+ population_df = pd.DataFrame(np.vstack(population_data), columns=["x", "y"])
21
+
22
+ def apply_kmeans(data, k):
23
+ kmeans = KMeans(n_clusters=k, random_state=42).fit(data)
24
+ centroids = kmeans.cluster_centers_
25
+ labels = kmeans.labels_
26
+ return centroids, labels
27
+
28
+ def main():
29
+ st.title("K-means Clustering Simulator")
30
+
31
+ dataset = st.selectbox("Choose a dataset:", ["", "교통접근성", "자연환경", "인구밀집도"])
32
+ k_value = st.slider("Select k value:", 1, 10)
33
+
34
+ data = None
35
+ if dataset == "교통접근성":
36
+ data = traffic_df
37
+ elif dataset == "자연환경":
38
+ data = nature_df
39
+ elif dataset == "인구밀집도":
40
+ data = population_df
41
+
42
+ if data is not None:
43
+ centroids, labels = apply_kmeans(data.values, k_value)
44
+
45
+ plt.figure(figsize=(8, 8))
46
+ plt.scatter(data['x'], data['y'], c=labels, cmap='viridis')
47
+ plt.scatter(centroids[:, 0], centroids[:, 1], s=200, c='red', marker='X')
48
+ plt.xlim(0, 100)
49
+ plt.ylim(0, 100)
50
+ plt.title(f"K-means clustering result for {dataset} Dataset (k={k_value})")
51
+ st.pyplot()
52
+
53
+ if __name__ == "__main__":
54
+ main()