import pandas as pd from sklearn.metrics.pairwise import cosine_similarity import gradio as gr def find_similar_items(stock_code): H='CustomerID';F=False;D=stock_code;C='StockCode' try:I=pd.read_excel('IBCF_Online_Retail.xlsx') except FileNotFoundError:return'Error: Excel file not found.' E=I.dropna(subset=[H]);A=E.pivot_table(index=H,columns=C,values='Quantity',aggfunc='sum');A=A.applymap(lambda x:1 if x>0 else 0);B=pd.DataFrame(cosine_similarity(A.T));B.columns=A.T.index;B[C]=A.T.index;B=B.set_index(C) try:D=int(D) except ValueError:return'Error: Invalid stock code.' try:J=list(B.loc[D].sort_values(ascending=F).iloc[:5].index) except KeyError:return'Stock code not found.Please enter a valid stock code' K=E.loc[E[C].isin(J),'Description'].drop_duplicates().to_frame().reset_index(drop=True);G=K.to_string(header=F,index=F).split('\n');G.insert(1,'-'*50);return '\n'.join(G) stock_code_input=gr.inputs.Textbox(label='Enter Stock Code:') output_table=gr.outputs.Textbox(label='Recommended Items') gr.Interface(fn=find_similar_items,inputs=stock_code_input,outputs=output_table,theme=gr.themes.Default(primary_hue='slate')).launch()