input: 
  def predict_football_match_winner(data: pd.DataFrame) -> float:
      """ Predict the winner of football matches using a GradientBoostingClassifier.
      The input data is a DataFrame with features including goals scored, possession, 
      shots, yellow cards, and red cards for both home and away teams, as well as the 
      target winner column. The function splits the data into training and test sets, 
      trains the model, makes predictions, and returns the model's score on the test set.
      >>> data = pd.DataFrame({
      ...     'home_team_goals': [2, 3, 1],
      ...     'away_team_goals': [1, 2, 3],
      ...     'home_team_possession': [60, 55, 50],
      ...     'away_team_possession': [40, 45, 50],
      ...     'home_team_shots': [10, 15, 5],
      ...     'away_team_shots': [5, 10, 15],
      ...     'home_team_yellow_cards': [1, 2, 0],
      ...     'away_team_yellow_cards': [0, 1, 2],
      ...     'home_team_red_cards': [0, 0, 1],
      ...     'away_team_red_cards': [0, 1, 0],
      ...     'winner': ['home', 'draw', 'away']
      ... })
      >>> predict_football_match_winner(data)
      0.6666666666666666
      """
      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)
      y_pred = gbm.predict(X_test)
      score = gbm.score(X_test, y_test)
      return score
  
output:     from sklearn.model_selection import train_test_split
      from sklearn.ensemble import GradientBoostingClassifier