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)