input: 
  import pandas as pd
  import numpy as np
  from sklearn.model_selection import train_test_split
  from sklearn.ensemble import GradientBoostingClassifier
  
  # Load data
  data = pd.read_csv('data.csv')
  
  # Select features
  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']]
  
  # Select target
  target = data['winner']
  
  # Split data into training and test sets
  X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)
  
  # Train the model
  gbm = GradientBoostingClassifier()
  gbm.fit(X_train, y_train)
  
  # Make predictions
  y_pred = gbm.predict(X_test)
  
  # Evaluate the model
  score = gbm.score(X_test, y_test)
  print(f'Model score: {score}')
  
  Should the features selected in the above code be enhanced to include additional metrics or statistics that could potentially improve the model's accuracy in predicting the winning team of football matches, such as player statistics or weather conditions during the match?
output:     
  # Add additional features
  data['home_team_avg_player_rating'] = np.random.rand(len(data)) * 10  # Example player rating
  data['away_team_avg_player_rating'] = np.random.rand(len(data)) * 10  # Example player rating
  data['weather_condition'] = np.random.choice(['sunny', 'rainy', 'cloudy'], len(data))  # Example weather condition
  
  # One-hot encode categorical features
  data = pd.get_dummies(data, columns=['weather_condition'])
  
  # Update features and target
  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', 'home_team_avg_player_rating',
                   'away_team_avg_player_rating', 'weather_condition_sunny', 'weather_condition_rainy',
                   'weather_condition_cloudy']]
  target = data['winner']
  
  # Split data into training and test sets again
  X_train, X_test, y_train, y_test = train_test_split(features, target, test_size=0.2, random_state=42)
  
  # Train the model again
  gbm = GradientBoostingClassifier()
  gbm.fit(X_train, y_train)
  
  # Make predictions again
  y_pred = gbm.predict(X_test)
  
  # Evaluate the model again
  score = gbm.score(X_test, y_test)
  print(f'Enhanced model score: {score}')
  