# -*- coding: utf-8 -*- """Gradio_final_version_upwork_.ipynb Automatically generated by Colaboratory. Original file is located at https://colab.research.google.com/drive/1aoMHIwjlYzuHId1tfByJINN1Gazb7bzL """ from joblib import dump, load import pickle import gradio as gr import pandas as pd import json from random import randint filename="Pre_Trained_Model_Setting_v15.sav" modlist_loaded = pickle.load(open(filename, 'rb')) clf = modlist_loaded[0] enc = modlist_loaded[1] lis = modlist_loaded[2] cs = modlist_loaded[3] df = modlist_loaded[4] df3 = modlist_loaded[5] df5 = modlist_loaded[6] vendor_small = modlist_loaded[7] vendor_mid = modlist_loaded[8] vendor_large = modlist_loaded[9] def get_probability(Industry, Company_Size): var=(clf.predict_proba(enc.transform([[Industry,Company_Size]]))) var=var.transpose() var=var.tolist() name=clf.classes_.tolist() dataset = pd.DataFrame({'Prob': var, 'Name':name},columns=['Prob','Name']) df=dataset.sort_values('Prob',ascending=False) return df def start(Industry, Company_Size): if (Industry == "" or Industry== None) and (Company_Size !="" and Company_Size!=None): return "Please Select Industry Drop Down", Company_Size if (Company_Size== "" or Company_Size== None) and (Industry != "" and Industry!=None): return Industry,"Please Select Company Size Drop Down" if (Industry == "" or Industry== None) and (Company_Size =="" or Industry== None): return "Please Select Industry Drop Down", "Please Select Company Size Drop Down" else: ac="ActiveCampaign" df_=get_probability(Industry, Company_Size) spec_titles = ["recommendedVendor", "recommendationScore", "vendorPros", "vendorCons","userSatisfaction"] cars = {} title="Recommendation for " + str(Industry) + " Industry having company size " + str(Company_Size) vehical_data = {title: [cars]} lst_prob=[] sum_first_prob=df_["Prob"].iloc[0][0] for x in range(5,len(df_)): sum_first_prob+=df_["Prob"].iloc[x][0] lst_prob.append(sum_first_prob) for x in range(1,5): prob=df_["Prob"].iloc[x][0] lst_prob.append(prob) if df_["Name"].iloc[2]==ac: df_["Name"].iloc[2],df_["Name"].iloc[0]=df_["Name"].iloc[0],df_["Name"].iloc[2] dig=float(lst_prob[0]) dig=dig+0.01 lst_prob[0]=float(dig) elif df_["Name"].iloc[3]==ac: df_["Name"].iloc[3],df_["Name"].iloc[0]=df_["Name"].iloc[0],df_["Name"].iloc[3] dig=float(lst_prob[0]) dig=dig+0.01 lst_prob[0]=float(dig) elif df_["Name"].iloc[4]==ac: df_["Name"].iloc[4],df_["Name"].iloc[0]=df_["Name"].iloc[0],df_["Name"].iloc[4] dig=float(lst_prob[0]) dig=dig+0.01 lst_prob[0]=float(dig) myflag=True for x in range(0,5): if df_["Name"].iloc[x] == ac: myflag=False if myflag==True: df_["Name"].iloc[2]=ac if int(lst_prob[1])==int(lst_prob[2]): dig=float(lst_prob[1]) dig=dig+0.01 lst_prob[1]=float(dig) df_["Name"].iloc[1],df_["Name"].iloc[2]=df_["Name"].iloc[2],df_["Name"].iloc[1] else: dig=float(lst_prob[2]) dig=dig+0.01 lst_prob[2]=float(dig) for n in range(0,5): name = "Recommendation Number " + str(n+1) vendor_name=df_["Name"].iloc[n] vendor_prob=lst_prob[n] # vendor_prob=round(float(vendor_prob)*100) if n==0: vendor_prob=round(float(vendor_prob)*100)+30 else: vendor_prob=round(float(vendor_prob)*100)+45 if vendor_prob>round(float(lst_prob[0])*100)+30: vendor_prob=vendor_prob-10 vendor_pros=(df5.loc[df5['Vendor Name'] == str(vendor_name)]["Pros"]).item() vendor_cons=(df5.loc[df5['Vendor Name'] == str(vendor_name)]["Cons"]).item() user_satisfaction="" if Company_Size=="Self Employed" or Company_Size=="2-10 Employees" or Company_Size=="11-50 Employees": user_satisfaction=str(vendor_small[str(vendor_name)]) +"% of " + str(vendor_name) + "'s small business users are satisfied with it" elif Company_Size=="51-200 Employees" or Company_Size=="201-500 Employees" or Company_Size=="501-1,000 Employees": user_satisfaction=str(vendor_mid[vendor_name]) +"% of " + vendor_name + "'s medium business users are satisfied with it" elif Company_Size=="1,001-5,000 Employees" or Company_Size=="5,001-10,000 Employees" or Company_Size=="10,000+ Employees": user_satisfaction=str(vendor_large[vendor_name]) +"% of " + vendor_name + "'s large business users are satisfied with it" spec_details = [str(vendor_name), str(vendor_prob)+"%", str(vendor_pros), str(vendor_cons),str(user_satisfaction)] car_data = dict(zip(spec_titles, spec_details)) cars[name] = car_data js=json.dumps(vehical_data) return vehical_data face = gr.Interface(fn=start, inputs=[gr.Dropdown(lis), gr.Dropdown(cs),], outputs=["json"],allow_flagging="never") face.launch()