import pandas as pd import pickle import gradio as gr from sklearn.preprocessing import LabelEncoder import os # --- Load dataset --- df_original = pd.read_csv('AB_ELEVATORS_DATASET_final.csv') categorical_cols_original = [ 'BRAND NAME', 'LIFT_TYPE', 'DOOR_FRAME', 'DOOR_TYPE', 'CABIN_MATERIAL', 'MOTOR_TYPE' ] # --- Create encoders --- encoders = {} for col in categorical_cols_original: le = LabelEncoder() le.fit(df_original[col]) encoders[col] = le categorical_options = { col: list(df_original[col].unique()) for col in categorical_cols_original } # --- Load model --- with open("elevator_model.pkl", "rb") as f: model = pickle.load(f) # --- Prediction function --- def predict_price( brand_name_str, lift_type_str, door_frame_str, door_type_str, cabin_material_str, motor_type_str, passengers_capacity, speed_mps, floors ): try: # Encode inputs input_data = pd.DataFrame([[ encoders['BRAND NAME'].transform([brand_name_str])[0], encoders['LIFT_TYPE'].transform([lift_type_str])[0], encoders['DOOR_FRAME'].transform([door_frame_str])[0], encoders['DOOR_TYPE'].transform([door_type_str])[0], encoders['CABIN_MATERIAL'].transform([cabin_material_str])[0], encoders['MOTOR_TYPE'].transform([motor_type_str])[0], int(passengers_capacity), float(speed_mps), int(floors) ]], columns=[ 'brand_name', 'lift_type', 'door_frame', 'door_type', 'cabin_material', 'motor_type', 'passengers_capacity', 'speed_mps', 'floors' ]) prediction = model.predict(input_data)[0] price = float(prediction) return ( f"### 💰 Estimated Price: ₹ {price:,.2f}", "✅ Quote generated successfully" ) except Exception as e: return f"❌ Error: {str(e)}", "⚠️ Please check inputs" #Function to get image path from dropdown def get_image_path(category, selection): if selection is None: return None # Convert dropdown value → UPPERCASE filename filename = selection.upper().replace(" ", "_") + ".jpg" path = os.path.join("Images", category, filename) return path if os.path.exists(path) else None # --- Custom UI using Blocks --- with gr.Blocks(theme=gr.themes.Soft(), title="AB Elevators") as demo: gr.Markdown("""
Get instant quotations based on your requirements
✨ Designed for AB Elevators | AI Powered Pricing