|
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() |