mkrish2025's picture
Upload folder using huggingface_hub
f33f463 verified
import streamlit as st
import pandas as pd
from huggingface_hub import hf_hub_download
import joblib
# Download and load the model
model_path = hf_hub_download(repo_id="mkrish2025/Tourism-Customer-Prediction", filename="best_tourism_prediction_model_v1.joblib")
model = joblib.load(model_path)
# Download preprocessor model
preprocessor_path = hf_hub_download(repo_id="mkrish2025/Tourism-Customer-Prediction", filename="preprocessor.joblib")
preprocessor = joblib.load(preprocessor_path)
# Streamlit UI for Machine Failure Prediction
st.title("Customer Tour Package Prediction App")
st.write("""
This application predicts the likelihood of customers purchasing the Wellness Tourism Package.
Please enter the customer details below to get a prediction.
""")
Age = st.number_input("Age", min_value=18, max_value=100, value=30)
MonthlyIncome = st.number_input("Monthly Income", min_value=1000, max_value=100000, value=5000)
TypeofContact = st.selectbox("Type of Contact", ["Self Enquiry", "Company Invited"])
CityTier = st.number_input("City Tier", min_value=1, max_value=3, value=1)
Occupation = st.selectbox("Occupation", ["Salaried", "Small Business", "Large Business"])
Gender = st.selectbox("Gender", ["Male", "Female"])
ProductPitched = st.selectbox("Product Pitched", ["Basic", "Deluxe", "Standard", "Super Deluxe", "King"])
MaritalStatus = st.selectbox("Marital Status", ["Single", "Married", "Unmarried", "Divorced"])
Passport = st.number_input("Passport (0=No, 1=Yes)", min_value=0, max_value=1, value=0, step=1)
OwnCar = st.number_input("Own Car (0=No, 1=Yes)", min_value=0, max_value=1, value=0, step=1)
Designation = st.selectbox("Designation", ["Executive", "Manager", "Senior Manager", "AVP", "VP"])
PreferredPropertyStar = st.number_input("Preferred PropertyStar", min_value=3, max_value=5, value=3, step=1)
NumberOfTrips = st.number_input("Number Of Trips", min_value=0, max_value=100, value=2, step=1)
TotalVisiting = st.number_input("Total Visting (includes child below 5)", min_value=1, max_value=10, value=2, step=1)
# Assemble input into DataFrame
input_data = pd.DataFrame([{
"Age": Age,
"MonthlyIncome": MonthlyIncome,
"Designation": Designation,
"OwnCar": OwnCar,
"Passport": Passport,
"CityTier": CityTier,
"MaritalStatus": MaritalStatus,
"ProductPitched": ProductPitched,
"Gender": Gender,
"Occupation": Occupation,
"TypeofContact": TypeofContact,
"PreferredPropertyStar": PreferredPropertyStar,
"NumberOfTrips": NumberOfTrips,
"TotalVisiting": TotalVisiting
}])
st.subheader("Raw Input Data")
st.dataframe(input_data)
# Prediction
if st.button("Predict"):
try:
prediction = model.predict(input_data)[0]
prediction_proba = model.predict_proba(input_data)[0][1]
if prediction == 1:
st.success(f"✅ Customer is likely to take the product (Confidence: {prediction_proba:.2f})")
else:
st.warning(f"❌ Customer is unlikely to take the product (Confidence: {1 - prediction_proba:.2f})")
except Exception as e:
st.error(f"Prediction failed: {e}")