| 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() |
|
|