crimson-nebula / app.py
shadow-sprinter's picture
Update app.py
a63b9be verified
import pickle
import numpy as np
import pandas as pd
import gradio as gr
# Load the pre-trained model
with open('crimson_nebula.pkl', 'rb') as f:
model = pickle.load(f)
# Define the prediction function
def predict_crimson_nebula(*inputs):
input_data = dict(zip(feature_names, inputs))
input_df = pd.DataFrame([input_data])
prediction = model.predict(input_df)
return prediction[0]
# Define features name
feature_names = [
"age",
"gender",
"country",
"urban_rural",
"income_level",
"employment_status",
"education_level",
"relationship_status",
"has_children",
"exercise_hours_per_week",
"sleep_hours_per_night",
"diet_quality",
"smoking",
"alcohol_frequency",
"perceived_stress_score",
"body_mass_index",
"blood_pressure_systolic",
"blood_pressure_diastolic",
"daily_steps_count",
"weekly_work_hours",
"hobbies_count",
"social_events_per_month",
"books_read_per_year",
"volunteer_hours_per_month",
"travel_frequency_per_year",
"daily_active_minutes_instagram",
"sessions_per_day",
"posts_created_per_week",
"reels_watched_per_day",
"stories_viewed_per_day",
"likes_given_per_day",
"comments_written_per_day",
"dms_sent_per_week",
"dms_received_per_week",
"ads_viewed_per_day",
"ads_clicked_per_day",
"time_on_feed_per_day",
"time_on_explore_per_day",
"time_on_messages_per_day",
"time_on_reels_per_day",
"followers_count",
"following_count",
"uses_premium_features",
"notification_response_rate",
"account_creation_year",
"average_session_length_minutes",
"content_type_preference",
"preferred_content_theme",
"privacy_setting_level",
"two_factor_auth_enabled",
"biometric_login_used",
"linked_accounts_count",
"subscription_status",
"user_engagement_score"
]
# Define the input and output components
input_components = [
gr.Slider(10, 70, step=1, label="Age"),
gr.Dropdown(["Male", "Female", "Non-binary", "Prefer not to say"], label="Gender"),
gr.Dropdown(["United States", "India", "Brazil", "Other", "United Kingdom", "Canada", "Australia", "South Korea", "Germany", "Japan"], label="Country"),
gr.Dropdown(["Urban", "Suburban", "Rural"], label="Urban/Rural"),
gr.Dropdown(["Low", "Lower-middle", "Middle", "Upper-middle", "High"], label="Income Level"),
gr.Dropdown(["Full-time employed", "Student", "Freelancer", "Unemployed", "Part-time", "Retired"], label="Employment Status"),
gr.Dropdown(["Bachelor's", "High School", "Some College", "Master's", "Other", "PhD"], label="Education Level"),
gr.Dropdown(["Single", "Married", "In a relationship", "Divorced", "Widowed"], label="Relationship Status"),
gr.Dropdown(["False", "True"], label="Has Children"),
gr.Slider(0, 20, step=1, label="Exercise Hours per Week"),
gr.Slider(0, 12, step=1, label="Sleep Hours per Night"),
gr.Dropdown(["Average", "Good", "Poor", "Very Poor", "Excellent"], label="Diet Quality"),
gr.Dropdown(["Yes", "No", "Former"], label="Smoking"),
gr.Dropdown(["Rarely", "Never", "Weekly", "Several times a week", "Daily"], label="Alcohol Frequency"),
gr.Slider(0, 40, step=1, label="Perceived Stress Score"),
gr.Slider(10, 40, step=1, label="Body Mass Index"),
gr.Slider(90, 180, step=1, label="Blood Pressure Systolic"),
gr.Slider(60, 120, step=1, label="Blood Pressure Diastolic"),
gr.Slider(0, 30000, step=100, label="Daily Steps Count"),
gr.Slider(0, 100, step=1, label="Weekly Work Hours"),
gr.Slider(0, 20, step=1, label="Hobbies Count"),
gr.Slider(0, 30, step=1, label="Social Events per Month"),
gr.Slider(0, 50, step=1, label="Books Read per Year"),
gr.Slider(0, 100, step=1, label="Volunteer Hours per Month"),
gr.Slider(0, 20, step=1, label="Travel Frequency per Year"),
gr.Slider(0, 300, step=10, label="Daily Active Minutes on Instagram"),
gr.Slider(0, 50, step=1, label="Sessions per Day"),
gr.Slider(0, 50, step=1, label="Posts Created per Week"),
gr.Slider(0, 300, step=10, label="Reels Watched per Day"),
gr.Slider(0, 500, step=10, label="Stories Viewed per Day"),
gr.Slider(0, 1000, step=10, label="Likes Given per Day"),
gr.Slider(0, 100, step=1, label="Comments Written per Day"),
gr.Slider(0, 200, step=1, label="DMs Sent per Week"),
gr.Slider(0, 200, step=1, label="DMs Received per Week"),
gr.Slider(0, 500, step=10, label="Ads Viewed per Day"),
gr.Slider(0, 100, step=1, label="Ads Clicked per Day"),
gr.Slider(0, 180, step=5, label="Time on Feed per Day (minutes)"),
gr.Slider(0, 120, step=5, label="Time on Explore per Day (minutes)"),
gr.Slider(0, 60, step=5, label="Time on Messages per Day (minutes)"),
gr.Slider(0, 180, step=5, label="Time on Reels per Day (minutes)"),
gr.Slider(0, 100000, step=1000, label="Followers Count"),
gr.Slider(0, 5000, step=100, label="Following Count"),
gr.Dropdown(["False", "True"], label="Uses Premium Features"),
gr.Slider(0, 100, step=1, label="Notification Response Rate (%)"),
gr.Slider(2005, 2024, step=1, label="Account Creation Year"),
gr.Slider(1, 180, step=1, label="Average Session Length (minutes)"),
gr.Dropdown(["Reels", "Stories", "Live", "Mixed", "Photos"], label="Content Type Preference"),
gr.Dropdown(["Fashion", "Travel", "Food", "Fitness", "Art", "Music", "Tech", "Other"], label="Preferred Content Theme"),
gr.Dropdown(["Public", "Private", "Friends only"], label="Privacy Setting Level"),
gr.Dropdown(["False", "True"], label="Two-Factor Authentication Enabled"),
gr.Dropdown(["False", "True"], label="Biometric Login Used"),
gr.Slider(0, 10, step=1, label="Linked Accounts Count"),
gr.Dropdown(["Free", "Premium", "Business"], label="Subscription Status"),
gr.Slider(0, 100, step=1, label="User Engagement Score")
]
output_component = gr.Label(label="Crimson Nebula Prediction")
# Interface
app = gr.Interface(
fn=predict_crimson_nebula,
inputs=input_components,
outputs=output_component,
title="Crimson Nebula",
description="Happiness Prediction Model"
)
# Launch the app
if __name__ == "__main__":
app.launch()