input: def predict_football_winner(data: pd.DataFrame) -> float:
      """ Predict the winning team of football matches using a Gradient Boosting Classifier.
      The function takes a pandas DataFrame with features and a target column 'winner'.
      It trains the model on 80% of the data and evaluates it on the remaining 20%.
      The function returns the accuracy score of the model.
      >>> data = pd.DataFrame({
      ...     'home_team_goals': [1, 2, 1],
      ...     'away_team_goals': [0, 1, 2],
      ...     'home_team_possession': [50, 60, 40],
      ...     'away_team_possession': [50, 40, 60],
      ...     'home_team_shots': [10, 8, 12],
      ...     'away_team_shots': [5, 7, 10],
      ...     'home_team_yellow_cards': [1, 2, 1],
      ...     'away_team_yellow_cards': [0, 1, 2],
      ...     'home_team_red_cards': [0, 0, 0],
      ...     'away_team_red_cards': [0, 0, 0],
      ...     'winner': [1, 0, 1]
      ... })
      >>> score = predict_football_winner(data)
      >>> print(f'Model score: {score}')
      Model score: 0.6666666666666666
      """
output:     from sklearn.model_selection import train_test_split
      from sklearn.ensemble import GradientBoostingClassifier
      from sklearn.metrics import accuracy_score
  
      X = data.drop('winner', axis=1)
      y = data['winner']
  
      X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
  
      model = GradientBoostingClassifier(random_state=42)
      model.fit(X_train, y_train)
  
      y_pred = model.predict(X_test)
      return accuracy_score(y_test, y_pred)