|
|
|
import gradio as gr |
|
import pandas as pd |
|
import matplotlib.pyplot as plt |
|
from sklearn.cluster import KMeans |
|
|
|
df = pd.read_csv('Mall_Customers.csv') |
|
|
|
|
|
|
|
def kmean_demo(df): |
|
data = df.iloc[:, [3, 4]].values |
|
kmeans = KMeans(n_clusters=5, init='k-means++', random_state=0) |
|
y_kmeans = kmeans.fit_predict(data) |
|
labels = kmeans.labels_ |
|
centroids = kmeans.cluster_centers_ |
|
details = [(name, sex, cluster) for name, sex, cluster in zip(df['CustomerID'], df['Gender'], kmeans.labels_)] |
|
|
|
|
|
fig, ax = plt.subplots(figsize=(14, 6)) |
|
ax.scatter(data[y_kmeans == 0, 0], data[y_kmeans == 0, 1], s=100, c='red', label='Cluster 1') |
|
ax.scatter(data[y_kmeans == 1, 0], data[y_kmeans == 1, 1], s=100, c='blue', label='Cluster 2') |
|
ax.scatter(data[y_kmeans == 2, 0], data[y_kmeans == 2, 1], s=100, c='green', label='Cluster 3') |
|
ax.scatter(data[y_kmeans == 3, 0], data[y_kmeans == 3, 1], s=100, c='cyan', label='Cluster 4') |
|
ax.scatter(data[y_kmeans == 4, 0], data[y_kmeans == 4, 1], s=100, c='magenta', label='Cluster 5') |
|
|
|
ax.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=400, c='yellow', label='Centroid') |
|
|
|
plt.title('Cluster Segmentation of Customers') |
|
plt.xlabel('Annual Income(K$)') |
|
plt.ylabel('Spending Score(1-100)') |
|
plt.legend() |
|
plt.savefig("scatter.png") |
|
plots = ["scatter.png"] |
|
|
|
return (plots, details) |
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
inputs = [gr.Dataframe(label="Supersoaker Production Data")] |
|
outputs = [gr.Gallery(label="Profiling Dashboard").style(grid=(1, 3)), "text"] |
|
demo = gr.Interface(kmean_demo, inputs=inputs, outputs=outputs, examples=[df.head(100)], |
|
title="Supersoaker Failures Analysis Dashboard").launch() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|