import gradio as gr import pandas as pd import joblib data = pd.read_csv(r"data_final.csv") model = joblib.load("KNN_Model.joblib") def product_recommender(customer_id): list_predicted = [] for id in data['product_id'].unique(): preds = list(model.predict(customer_id, id)) product_id = preds[1] product_score = preds[3] list_predicted.append((product_id, product_score)) top_5_products_raw = sorted(list_predicted, key=lambda x:x[1], reverse=True)[:5] top_5_products = [product[0] for product in top_5_products_raw] product_1_category = data[data['product_id']==top_5_products[0]]['category'].values[0] product_2_category = data[data['product_id']==top_5_products[1]]['category'].values[0] product_3_category = data[data['product_id']==top_5_products[2]]['category'].values[0] product_4_category = data[data['product_id']==top_5_products[3]]['category'].values[0] product_5_category = data[data['product_id']==top_5_products[4]]['category'].values[0] result_1 = f"Recommendation Product ID {top_5_products[0]} with Category {product_1_category}" result_2 = f"Recommendation Product ID {top_5_products[1]} with Category {product_2_category}" result_3 = f"Recommendation Product ID {top_5_products[2]} with Category {product_3_category}" result_4 = f"Recommendation Product ID {top_5_products[3]} with Category {product_4_category}" result_5 = f"Recommendation Product ID {top_5_products[4]} with Category {product_5_category}" return result_1, result_2, result_3, result_4, result_5 demo = gr.Interface( title="Product Recommendation System", description="""This User Interface is Powered by Machine Learning to Predict the Top 5 of Product that customer likely to buy in the next purchase. All you need is to Input Customer ID and then the Recommendation will be appear.""", fn=product_recommender, inputs=[ gr.Number(label="Input Customer ID") ], outputs=[ gr.Textbox(label="Recommendation Product 1"), gr.Textbox(label="Recommendation Product 2"), gr.Textbox(label="Recommendation Product 3"), gr.Textbox(label="Recommendation Product 4"), gr.Textbox(label="Recommendation Product 5") ] ) if __name__ == "__main__": demo.launch()