RodneyWizard's picture
Update app.py
48d7d7a verified
import gradio as gr
import numpy as np
import matplotlib.pyplot as plt
import joblib
model = joblib.load('football_lr_model.pkl')
def predict_overall_rating(age, potential, weak_foot, skill, crossing, finishing, heading_accuracy, short_passing, volleys, dribbling, curve, freekick_accuracy, long_passing, ball_control, acceleration, sprint_speed, agility, reactions, balance, shot_power, jumping, stamina, strength, long_shots, aggression, interceptions, positioning, vision, penalties, composure, marking, standing_tackle, sliding_tackle
):
input_data = np.array([[age, potential, weak_foot, skill, crossing, finishing, heading_accuracy, short_passing, volleys, dribbling, curve, freekick_accuracy, long_passing, ball_control, acceleration, sprint_speed, agility, reactions, balance, shot_power, jumping, stamina, strength, long_shots, aggression, interceptions, positioning, vision, penalties, composure, marking, standing_tackle, sliding_tackle
]])
prediction = model.predict(input_data)[0][0]
return round(prediction, 2)
def radar_chart(values):
labels = ["Speed", "Dribbling", "Shooting", "Passing", "Strength", "Stamina"]
angles = np.linspace(0, 2 * np.pi, len(labels), endpoint=False).tolist()
values += values[:1]
angles += angles[:1]
fig, ax = plt.subplots(figsize=(6, 6), subplot_kw={'projection': 'polar'})
ax.fill(angles, values, color='blue', alpha=0.3)
ax.plot(angles, values, color='blue', linewidth=2)
ax.set_yticklabels([])
ax.set_xticks(angles[:-1])
ax.set_xticklabels(labels)
return fig
def combined_interface(age, potential, weak_foot, skill, crossing, finishing, heading_accuracy, short_passing, volleys, dribbling, curve, freekick_accuracy, long_passing, ball_control, acceleration, sprint_speed, agility, reactions, balance, shot_power, jumping, stamina, strength, long_shots, aggression, interceptions, positioning, vision, penalties, composure, marking, standing_tackle, sliding_tackle
):
rating = predict_overall_rating(age, potential, weak_foot, skill, crossing, finishing, heading_accuracy, short_passing, volleys, dribbling, curve, freekick_accuracy, long_passing, ball_control, acceleration, sprint_speed, agility, reactions, balance, shot_power, jumping, stamina, strength, long_shots, aggression, interceptions, positioning, vision, penalties, composure, marking, standing_tackle, sliding_tackle
)
radar = radar_chart([sprint_speed, dribbling, shot_power, short_passing, strength, stamina])
return rating, radar
demo = gr.Interface(
fn=combined_interface,
inputs=[
gr.Slider(16, 45, step=1, label="Age"),
gr.Slider(40, 99, step=1, label="Potential"),
gr.Slider(1, 5, step=1, label="Weak Foot"),
gr.Slider(1, 5, step=1, label="Skill Moves"),
gr.Slider(30, 99, step=1, label="Crossing"),
gr.Slider(30, 99, step=1, label="Finishing"),
gr.Slider(30, 99, step=1, label="Heading"),
gr.Slider(30, 99, step=1, label="Short_Passing"),
gr.Slider(30, 99, step=1, label="Volleys"),
gr.Slider(30, 99, step=1, label="Dribbling"),
gr.Slider(30, 99, step=1, label="Curve"),
gr.Slider(30, 99, step=1, label="Freekick"),
gr.Slider(30, 99, step=1, label="Long Passing"),
gr.Slider(30, 99, step=1, label="Ball Control"),
gr.Slider(30, 99, step=1, label="Acceleration"),
gr.Slider(30, 99, step=1, label="Sprint Speed"),
gr.Slider(30, 99, step=1, label="Agility"),
gr.Slider(30, 99, step=1, label="Reactions"),
gr.Slider(30, 99, step=1, label="Balance"),
gr.Slider(30, 99, step=1, label="Shot Power"),
gr.Slider(30, 99, step=1, label="Jumping"),
gr.Slider(30, 99, step=1, label="Stamina"),
gr.Slider(30, 99, step=1, label="Strength"),
gr.Slider(30, 99, step=1, label="Long Shots"),
gr.Slider(30, 99, step=1, label="Aggression"),
gr.Slider(30, 99, step=1, label="Interception"),
gr.Slider(30, 99, step=1, label="Positioning"),
gr.Slider(30, 99, step=1, label="Vision"),
gr.Slider(30, 99, step=1, label="Penalties"),
gr.Slider(30, 99, step=1, label="Composure"),
gr.Slider(30, 99, step=1, label="Marking"),
gr.Slider(30, 99, step=1, label="Standing Tackle"),
gr.Slider(30, 99, step=1, label="Sliding Tackle")
],
outputs=[
gr.Textbox(label="Predicted Overall Rating"),
gr.Plot(label="Player Attributes Radar Chart")
],
title="Football AI Player Rating Predictor",
description="Adjust the sliders to set a player's attributes and get an AI-predicted overall rating!"
)
demo.launch()