| | import streamlit as st |
| | import pandas as pd |
| | from huggingface_hub import hf_hub_download |
| | import joblib |
| |
|
| | |
| | model_path = hf_hub_download(repo_id="affanthinks/Tourism-Package-Prediction", filename="best_tourism_pred_model_v1.joblib") |
| |
|
| | |
| | model = joblib.load(model_path) |
| |
|
| | |
| | st.title("tourism Prediction App") |
| | st.write("The tourism Prediction App is an internal tool for tourism staff that predicts whether customers are purchasing the product based on their details and pitch.") |
| | st.write("Kindly enter the customer details to check whether they are likely to purchase.") |
| |
|
| | |
| | Age = st.number_input("Age (Age of the customer)", min_value=18, max_value=120, value=30) |
| |
|
| | TypeofContact = st.selectbox( |
| | "Type of Contact", |
| | ["Self Enquiry", "Company Invited"] |
| | ) |
| |
|
| | CityTier = st.selectbox( |
| | "City Tier", |
| | [1, 2, 3] |
| | ) |
| |
|
| | Occupation = st.selectbox( |
| | "Occupation", |
| | ["Salaried", "Free Lancer", "Small Business", "Large Business"] |
| | ) |
| |
|
| | Gender = st.selectbox( |
| | "Gender", |
| | ["Female", "Male", "Fe Male"] |
| | ) |
| |
|
| | NumberOfPersonVisiting = st.number_input( |
| | "Number of Persons Visiting", |
| | min_value=1, max_value=20, value=2 |
| | ) |
| |
|
| | PreferredPropertyStar = st.selectbox("Preferred Property Star Rating", [3, 4, 5]) |
| |
|
| |
|
| | MaritalStatus = st.selectbox( |
| | "Marital Status", |
| | ["Single", "Divorced", "Married", "Unmarried"] |
| | ) |
| |
|
| | NumberOfTrips = st.number_input("Number of Trips Annually", min_value=1, max_value=22, value=1) |
| |
|
| |
|
| | Passport = st.selectbox( |
| | "Passport", |
| | ["Yes", "No"] |
| | ) |
| |
|
| | OwnCar = st.selectbox( |
| | "Own Car", |
| | ["Yes", "No"] |
| | ) |
| |
|
| | NumberOfChildrenVisiting = st.number_input( |
| | "Number of Children Visiting (below 5)", |
| | min_value=0, max_value=10, value=0 |
| | ) |
| |
|
| | Designation = st.selectbox( |
| | "Designation", |
| | ["Manager", "Executive", "Senior Manager", "AVP", "VP"] |
| | ) |
| |
|
| | MonthlyIncome = st.number_input( |
| | "Monthly Income", |
| | min_value=1000.0, value=50000.0 |
| | ) |
| |
|
| | |
| | PitchSatisfactionScore = st.slider("Pitch Satisfaction Score", 1, 5, 3) |
| |
|
| |
|
| | ProductPitched = st.selectbox( |
| | "Product Pitched", |
| | ["Deluxe", "Basic", "Standard", "Super Deluxe", "King"] |
| | ) |
| |
|
| | NumberOfFollowups = st.number_input( |
| | "Number Of Follow-ups", |
| | min_value=0, max_value=50, value=1 |
| | ) |
| |
|
| | DurationOfPitch = st.number_input("Duration of Pitch (minutes)", min_value=5, max_value=127, value=10) |
| |
|
| |
|
| | |
| | input_data = pd.DataFrame([{ |
| | 'Age': Age, |
| | 'TypeofContact': TypeofContact, |
| | 'CityTier': CityTier, |
| | 'Occupation': Occupation, |
| | 'Gender': Gender, |
| | 'NumberOfPersonVisiting': NumberOfPersonVisiting, |
| | 'PreferredPropertyStar': PreferredPropertyStar, |
| | 'MaritalStatus': MaritalStatus, |
| | 'NumberOfTrips': NumberOfTrips, |
| | 'Passport': 1 if Passport == "Yes" else 0, |
| | 'OwnCar': 1 if OwnCar == "Yes" else 0, |
| | 'NumberOfChildrenVisiting': NumberOfChildrenVisiting, |
| | 'Designation': Designation, |
| | 'MonthlyIncome': MonthlyIncome, |
| | |
| | 'PitchSatisfactionScore': PitchSatisfactionScore, |
| | 'ProductPitched': ProductPitched, |
| | 'NumberOfFollowups': NumberOfFollowups, |
| | 'DurationOfPitch': DurationOfPitch |
| | }]) |
| |
|
| |
|
| | |
| | classification_threshold = 0.45 |
| |
|
| | |
| | if st.button("Predict"): |
| | prediction_proba = model.predict_proba(input_data)[0, 1] |
| | prediction = (prediction_proba >= classification_threshold).astype(int) |
| | result = "purchase" if prediction == 1 else "not purchase" |
| | st.write(f"Based on the information provided, the customer is likely to {result}.") |
| |
|