import pandas as pd import pickle import numpy as np import streamlit as st import gdown # File IDs model_id = "1HSQTjJ_hvBBmVJmYUmrkq5T7ubpfDwzF" top_country_id = "1aLkaAqfrs3GcrMvZcuyQ0NjFhAhrdIlR" model_url = f"https://drive.google.com/uc?id={model_id}" top_country_url = f"https://drive.google.com/uc?id={top_country_id}" @st.cache_resource def load_model(): gdown.download(model_url, "best_rf_model.pkl", quiet=False) with open("best_rf_model.pkl", "rb") as f: return pickle.load(f) @st.cache_resource def load_top_country(): gdown.download(top_country_url, "top_country.pkl", quiet=False) with open("top_country.pkl", "rb") as f: return pickle.load(f) model = load_model() top_country = load_top_country() st.set_page_config(page_title="Hotel Booking Prediction", layout="wide") st.markdown("""

Hotel Booking Prediction

Welcome to Hotel Booking Prediction System

Fill in the form below to predict hotel booking!

""", unsafe_allow_html=True) st.write("") st.write("") with st.form(key="hotel_bookings"): col1, col2 = st.columns(2) with col1: name = st.selectbox("Hotel Type", ("city_hotel", "resort_hotel"), index=0) lead = st.number_input( "Lead Time", min_value=0, max_value=600, value=0, step=1, help="jarak antar waktu booking dan check-in", ) arrival_year = st.selectbox("Arrival Year", ("2015", "2016", "2017"), index=0) arrival_month = st.selectbox( "Arrival Months", ( "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ), index=0, ) with col2: arrival_week = st.number_input( "Arrival Weeks", min_value=1, max_value=52, value=1, step=1, help="minggu kedatangan", ) arrival_day = st.number_input( "Arrival Days", min_value=1, max_value=31, value=1, step=1, help="tanggal kedatangan", ) submitted = st.form_submit_button("Predict", use_container_width=True) if submitted: # Prepare data for prediction data = { 'hotel': name, 'lead_time': lead, 'arrival_date_year': int(arrival_year), 'arrival_date_month': arrival_month, 'arrival_date_week_number': arrival_week, 'arrival_date_day_of_month': arrival_day } df = pd.DataFrame([data]) try: prediction = model.predict(df) st.success("Prediction Complete!") if prediction[0] == 1: st.error("⚠️ This booking is likely to be CANCELLED") else: st.success("✅ This booking is likely to be CONFIRMED") except Exception as e: st.error(f"Error making prediction: {str(e)}")