Spaces:
Build error
Build error
Download app.py from arad1367/Grocery_App_Classification_HUNGARY: direct link, hf CLI and curl.
- Browser
- Download file 2.79 kB
-
https://huggingface.co/spaces/arad1367/Grocery_App_Classification_HUNGARY/resolve/main/app.py
- Command line
-
hf download hf://spaces/arad1367/Grocery_App_Classification_HUNGARY/app.py
-
curl -L -o app.py https://huggingface.co/spaces/arad1367/Grocery_App_Classification_HUNGARY/resolve/main/app.py
2.79 kB
| import streamlit as st | |
| import numpy as np | |
| import pickle | |
| import random | |
| import os | |
| # Function to load the model | |
| def load_model(): | |
| try: | |
| # Get the absolute path to the .pkl file | |
| model_path = os.path.join(os.getcwd(), "clfmodel.pkl") | |
| model = pickle.load(open(model_path, 'rb')) | |
| st.write("Model loaded successfully.") | |
| return model | |
| except Exception as e: | |
| st.write("Something went wrong while loading the model.") | |
| st.write(e) | |
| return None | |
| # Function to make prediction | |
| def make_prediction(_model, features): | |
| try: | |
| predicted_label = _model.predict(features) | |
| return predicted_label | |
| except Exception as e: | |
| st.write("Something went wrong while making prediction.") | |
| st.write(e) | |
| return None | |
| # Main function to run the app | |
| def main(): | |
| st.title("Custom Grocery App Predictor in Hungary") | |
| st.write("This app predicts the preferable grocery app based on user characteristics.") | |
| # Load the model | |
| clf_model = load_model() | |
| if clf_model: | |
| # Sidebar inputs | |
| st.sidebar.header('User Input Features') | |
| gender = st.sidebar.radio('Gender', ('Male', 'Female')) | |
| education = st.sidebar.selectbox('Education Level', ('Under Diploma and Diploma', 'Associate', 'Bachelor', 'Master', 'PhD')) | |
| age = st.sidebar.slider('Age', 18, 100, 30) | |
| exp_online = st.sidebar.slider('Years of Online Experience', 0, 50, 5) | |
| exp_app = st.sidebar.slider('Years of App Experience', 0, 20, 1) | |
| gender_code = 1 if gender == 'Male' else 2 | |
| education_code = ['Under Diploma and Diploma', 'Associate', 'Bachelor', 'Master', 'PhD'].index(education) + 1 | |
| # Make prediction | |
| predicted_label = make_prediction(clf_model, np.array([[gender_code, education_code, age, exp_online, exp_app]])) | |
| if predicted_label is not None: | |
| class_App_names = ['FoodPanda', 'Wolt', 'Spar', 'Tesco online', 'myLidl'] | |
| predicted_App_class = class_App_names[predicted_label[0] - 1] | |
| # Generate a random color | |
| random_color = "#{:06x}".format(random.randint(0, 0xFFFFFF)) | |
| # Render the output with only the predicted_App_class colored and bigger font size | |
| st.write(f"In Hungary, for a {gender}, with education level of {education}, age of {age}, with online experience of {exp_online} years, and shopping experience from online Apps {exp_app} years, It seems that the preferable Grocery App is: ", end="") | |
| st.markdown(f"<span style='color: {random_color}; font-weight: bold; font-size: 50px'>{predicted_App_class}</span>.", unsafe_allow_html=True) | |
| else: | |
| st.write("Failed to load the model.") | |
| if __name__ == '__main__': | |
| main() | |