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_match_winner(data: pd.DataFrame) -> float:
      """ Predicts the winning team of football matches using a Gradient Boosting Classifier. 
      The model uses features such as goals, possession, shots, and cards to predict the outcome.
      The data is split into training and test sets, and the model is evaluated on the test set.
      >>> data = pd.DataFrame({
      ...     'home_team_goals': [2, 1, 3],
      ...     'away_team_goals': [1, 2, 1],
      ...     'home_team_possession': [60, 50, 70],
      ...     'away_team_possession': [40, 50, 30],
      ...     'home_team_shots': [10, 8, 12],
      ...     'away_team_shots': [5, 7, 9],
      ...     'home_team_yellow_cards': [1, 2, 0],
      ...     'away_team_yellow_cards': [2, 1, 1],
      ...     'home_team_red_cards': [0, 0, 1],
      ...     'away_team_red_cards': [0, 1, 0],
      ...     'winner': ['home', 'away', 'home']
      ... })
      >>> predict_football_match_winner(data)
      1.0
      """
      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