|
import pandas as pd |
|
from sklearn.metrics.pairwise import cosine_similarity |
|
import gradio as gr |
|
def recommend_items(customer_id_1,customer_id_2): |
|
H='Error';G=customer_id_2;F=customer_id_1;D='StockCode';C='CustomerID' |
|
try:I=pd.read_excel('UBCF_Online_Retail.xlsx') |
|
except FileNotFoundError:return'Error: Excel file not found.' |
|
E=I.dropna(subset=[C]);A=E.pivot_table(index=C,columns=D,values='Quantity',aggfunc='sum');A=A.applymap(lambda x:1 if x>0 else 0);B=pd.DataFrame(cosine_similarity(A));B.columns=A.index;B[C]=A.index;B=B.set_index(C) |
|
try:J=set(A.loc[F].iloc[A.loc[F].to_numpy().nonzero()].index) |
|
except KeyError:return pd.DataFrame({H:['Customer ID 1 is invalid. Please enter a valid Customer ID']}) |
|
try:K=set(A.loc[G].iloc[A.loc[G].to_numpy().nonzero()].index) |
|
except KeyError:return pd.DataFrame({H:['Customer ID 2 is invalid. Please enter a valid Customer ID']}) |
|
L=J-K;return E.loc[E[D].isin(L),[D,'Description']].drop_duplicates().set_index(D) |
|
iface=gr.Interface(fn=recommend_items,inputs=[gr.inputs.Number(label='Customer ID 1'),gr.inputs.Number(label='Customer ID 2')],outputs=gr.outputs.Dataframe(label='Recommended Items for Customer 2',type='pandas'),theme=gr.themes.Default(primary_hue='slate'),allow_flagging=False) |
|
iface.launch() |