import gradio as gr import joblib import pandas as pd model = joblib.load("spotify_tree_model.pkl") def predict_hit(danceability, energy, loudness, speechiness, acousticness, instrumentalness, liveness, valence, tempo): data = pd.DataFrame([[danceability, energy, loudness, speechiness, acousticness, instrumentalness, liveness, valence, tempo]], columns=['danceability', 'energy', 'loudness', 'speechiness', 'acousticness', 'instrumentalness', 'liveness', 'valence', 'tempo']) pred = model.predict(data)[0] if pred == 1: result = "🔥 Hit Song!" confidence = 100.0 else: result = "Not a Hit" confidence = 100.0 return f"{result}\nConfidence: {confidence:.1f}%" demo = gr.Interface( fn=predict_hit, inputs=[ gr.Slider(0, 1, step=0.01, label="Danceability"), gr.Slider(0, 1, step=0.01, label="Energy"), gr.Slider(-60, 0, step=0.1, label="Loudness"), gr.Slider(0, 1, step=0.01, label="Speechiness"), gr.Slider(0, 1, step=0.01, label="Acousticness"), gr.Slider(0, 1, step=0.01, label="Instrumentalness"), gr.Slider(0, 1, step=0.01, label="Liveness"), gr.Slider(0, 1, step=0.01, label="Valence"), gr.Slider(50, 200, step=1, label="Tempo") ], outputs=gr.Textbox(label="Prediction"), title="Spotify Hit Predictor", description="Enter song audio features to predict if it will be a hit" ) demo.launch()