input: Write a function to develop a machine learning model in Python for predicting the winning team of football matches. Use data from the past 5 years of the Premier League. The function should load the data, select relevant features and target, split the data into training and test sets, train a GradientBoostingClassifier, make predictions, and evaluate the model. If the model score is greater than 0.5, return "Model is effective", otherwise return "Model needs improvement". If the input data is empty, return "No data available".
  def predict_winner(data_path):
      import pandas as pd
      import numpy as np
      from sklearn.model_selection import train_test_split
      from sklearn.ensemble import GradientBoostingClassifier
  
      # Load data
      try:
          data = pd.read_csv(data_path)
      except FileNotFoundError:
          return "No data available"
  
      if data.empty:
          return "No data available"
  
      # 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}')
  
      if score > 0.5:
          return "Model is effective"
      else:
          return "Model needs improvement"
  
  assert predict_winner('data.csv')=="Model is effective"
  assert predict_winner('empty.csv')=="No data available"
output: def predict_winner(data_path):
      import pandas as pd
      import numpy as np
      from sklearn.model_selection import train_test_split
      from sklearn.ensemble import GradientBoostingClassifier
  
      try:
          data = pd.read_csv(data_path)
      except FileNotFoundError:
          return "No data available"
  
      if data.empty:
          return "No data available"
  
      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)
      print(f'Model score: {score}')
  
      if score > 0.5:
          return "Model is effective"
      else:
          return "Model needs improvement"