input: Write a python function to perform a grid search on hyperparameters for a RandomForestClassifier using given parameters.
  assert perform_grid_search(X, y).n_estimators in range(2, 30, 2)
  assert perform_grid_search(X, y).max_depth in range(2, 12, 2)
  assert perform_grid_search(X, y).min_samples_leaf in range(1, 10, 2)
output: from sklearn.model_selection import GridSearchCV
  from sklearn.ensemble import RandomForestClassifier
  
  def perform_grid_search(X, y):
      param_grid = {
          'n_estimators': range(2, 30, 2),
          'max_depth': range(2, 12, 2),
          'min_samples_leaf': range(1, 10, 2)
      }
      grid_search = GridSearchCV(RandomForestClassifier(), param_grid, cv=5)
      grid_search.fit(X, y)
      return grid_search.best_params_