demo / Mall_Customer.py
tholc's picture
fix mall app 1
14d27c7
import gradio as gr
import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
df = pd.read_csv('Mall_Customers.csv')
# df = pd.read_csv("dssv.csv", sep = ";", encoding='utf-8')
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_)]
# plotting the the clusters
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"]
# plt.show()
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()
## search name service
# inputs = [gr.Dataframe(row_count = (2, "dynamic"), col_count=(4,"dynamic"), label="Input Data", interactive=1)]
#
# outputs = [gr.Dataframe(row_count = (2, "dynamic"), col_count=(16, "fixed"),interactive=1, label="Predictions")]
#
# demo = gr.Interface(fn=search_student, inputs='text', outputs=outputs, examples = [[df.head(2)]])
#
# demo.launch(server_name="127.0.0.1", server_port=5601)#, share=True)