code: def split_train_val(self, train):
      logger.debug(
          "No validation data provided."
          f" Using {self.config.validation_split*100}% of train data as validation"
      )
      val_idx = train.sample(
          int(self.config.validation_split * len(train)),
          random_state=self.seed,
      ).index
      validation = train[train.index.isin(val_idx)]
      train = train[~train.index.isin(val_idx)]
      return train, validation
  
imports: import re
  import warnings
  from enum import Enum
  from pathlib import Path
  from typing import Dict, Iterable, List, Optional, Tuple, Union
  import joblib
  import numpy
  import pandas
  import pytorch_lightning
  import torch
  from omegaconf import DictConfig
  from pandas import DataFrame, DatetimeTZDtype, to_datetime
  from pandas.tseries import offsets
  from pandas.tseries.frequencies import to_offset
  from sklearn.base import TransformerMixin, copy
  from sklearn.preprocessing import FunctionTransformer, LabelEncoder, PowerTransformer, QuantileTransformer, StandardScaler
  from torch.utils.data import DataLoader, Dataset
  from pytorch_tabular.config import InferredConfig
  from pytorch_tabular.utils import get_logger
  from .categorical_encoders import OrdinalEncoder
label_desc: Use image node_id 24 for calling the TabularDatamodule obj's underlying member method code with example usage: obj.split_train_val(train) and returns: train,  validation