import pandas as pd from gradio import Interface, Textbox, Dropdown # Load the prediction data for each algorithm and season als_spring_data = pd.read_csv('als_pred_spring.csv') als_fall_data = pd.read_csv('als_pred_fall.csv') als_winter_data = pd.read_csv('als_pred_winter.csv') als_summer_data = pd.read_csv('als_pred_summer.csv') nmf_spring_data = pd.read_csv('nmf_pred_spring.csv') nmf_fall_data = pd.read_csv('nmf_pred_fall.csv') nmf_winter_data = pd.read_csv('nmf_pred_winter.csv') nmf_summer_data = pd.read_csv('nmf_pred_summer.csv') # Function to get recommendations based on customer ID, season, and algorithm def get_recommendations(customer_id, season, algorithm): if algorithm == 'ALS': if season == 'Spring': data = als_spring_data elif season == 'Fall': data = als_fall_data elif season == 'Winter': data = als_winter_data elif season == 'Summer': data = als_summer_data else: return 'Invalid season' elif algorithm == 'NMF': if season == 'Spring': data = nmf_spring_data elif season == 'Fall': data = nmf_fall_data elif season == 'Winter': data = nmf_winter_data elif season == 'Summer': data = nmf_summer_data else: return 'Invalid season' else: return 'Invalid algorithm' if customer_id not in data['customer_id'].values: return 'Recommendation not found' recommendations = data[data['customer_id'] == customer_id]['article_id'].iloc[0] recommendations = recommendations.strip("[]").split(", ") recommendations = [f"Item {i}: {item}" for i, item in enumerate(recommendations, 1)] return '\n'.join(recommendations) # Create the input and output interfaces customer_id_input = Textbox(label="Customer ID") season_input = Dropdown(choices=['Spring', 'Fall', 'Winter', 'Summer'], label="Season") algorithm_input = Dropdown(choices=['ALS', 'NMF'], label="Algorithm") output = Textbox(label="Recommendations") # Create the interface with the title title = "Collaborative Filtering for Recommendation System on Fashion Products" interface = Interface(fn=get_recommendations, inputs=[customer_id_input, season_input, algorithm_input], outputs=output, title=title) # Run the interface interface.launch()