class_docstr: Random Forest model (scikit-learn): https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html
code: def _set_default_params(self):
      default_params = {
          # TODO: 600 is much better, but increases info leakage in stacking -> therefore 300 is ~equal in stack ensemble final quality.
          #  Consider adding targeted noise to OOF to avoid info leakage, or increase `min_samples_leaf`.
          "n_estimators": 300,
          # Cap leaf nodes to 15000 to avoid large datasets using unreasonable amounts of memory/disk for RF/XT.
          #  Ensures that memory and disk usage of RF model with 300 n_estimators is at most ~500 MB for binary/regression, ~200 MB per class for multiclass.
          #  This has no effect on datasets with <=15000 rows, and minimal to no impact on datasets with <50000 rows.
          #  For large datasets, will often make the model worse, but will significantly speed up inference speed and massively reduce memory and disk usage.
          #  For example, when left uncapped, RF can use 5 GB of disk for a regression dataset with 2M rows.
          #  Multiply by the 8 RF/XT models in config for best quality / high quality and this is 40 GB of tree models, which is unreasonable.
          #  This size scales linearly with number of rows.
          "max_leaf_nodes": 15000,
          "n_jobs": -1,
          "random_state": 0,
          "bootstrap": True,  # Required for OOB estimates, setting to False will raise exception if bagging.
          # TODO: min_samples_leaf=5 is too large on most problems, however on some datasets it helps a lot (airlines likes >40 min_samples_leaf, adult likes 2 much better than 1)
          #  This value would need to be tuned per dataset, likely very worthwhile.
          #  Higher values = less OOF info leak, default = 1, which maximizes info leak.
          # 'min_samples_leaf': 5,  # Significantly reduces info leakage to stacker models. Never use the default/1 when using as base model.
          # 'oob_score': True,  # Disabled by default as it is better to do it post-fit via custom logic.
      }
      for param, val in default_params.items():
          self._set_default_param_value(param, val)
  
imports: import logging
  import math
  import os
  import pickle
  import sys
  import time
  import numpy
  from autogluon.common.features.types import R_BOOL, R_CATEGORY, R_FLOAT, R_INT
  from autogluon.common.utils.resource_utils import ResourceManager
  from autogluon.core.constants import MULTICLASS, QUANTILE, REGRESSION, SOFTCLASS
  from autogluon.core.models import AbstractModel
  from autogluon.core.utils.exceptions import NotEnoughMemoryError, TimeLimitExceeded
  from autogluon.core.utils.utils import normalize_pred_probas
  from autogluon.features.generators import LabelEncoderFeatureGenerator
  from .compilers.native import RFNativeCompiler
  from .compilers.onnx import RFOnnxCompiler
label_desc: Use image node_id 4 for calling the RFModel obj's underlying member method code with example usage: obj._set_default_params() without return types