input: 
  import pandas as pd
  import numpy as np
  from sklearn.model_selection import train_test_split
  from sklearn.ensemble import GradientBoostingClassifier
  
  def predict_football_winner(data: pd.DataFrame) -> float:
      """
      Predicts the winning team of football matches using features from the data.
      The data should include features such as home team goals, away team goals,
      possession, shots, yellow cards, and red cards. The output is the accuracy
      score of the model.
      
      >>> data = pd.DataFrame({
      ...     'home_team_goals': [2, 1, 3, 0],
      ...     'away_team_goals': [1, 2, 1, 0],
      ...     'home_team_possession': [55, 60, 45, 50],
      ...     'away_team_possession': [45, 40, 55, 50],
      ...     'home_team_shots': [10, 8, 12, 5],
      ...     'away_team_shots': [5, 10, 8, 4],
      ...     'home_team_yellow_cards': [1, 2, 0, 1],
      ...     'away_team_yellow_cards': [2, 1, 1, 0],
      ...     'home_team_red_cards': [0, 0, 0, 0],
      ...     'away_team_red_cards': [0, 1, 0, 0],
      ...     'winner': [1, 0, 1, -1]
      ... })
      >>> predict_football_winner(data)
      0.5
      """
      features = data[['home_team_goals', 'away_team_goals', 'home_team_possession', 'away_team_possession',
                       'home_team_shots', 'away_team_shots', 'home_team_yellow_cards', 'away_team_yellow_cards',
                       'home_team_red_cards', 'away_team_red_cards']]
      target = data['winner']
      X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)
      gbm = GradientBoostingClassifier()
      gbm.fit(X_train, y_train)
      score = gbm.score(X_test, y_test)
      return score
  
output:     
      features = data[['home_team_goals', 'away_team_goals', 'home_team_possession', 'away_team_possession',
                       'home_team_shots', 'away_team_shots', 'home_team_yellow_cards', 'away_team_yellow_cards',
                       'home_team_red_cards', 'away_team_red_cards']]
      target = data['winner']
      X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)
      gbm = GradientBoostingClassifier()
      gbm.fit(X_train, y_train)
      score = gbm.score(X_test, y_test)
      return score
  