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