code: def load_covertype_dataset(download_dir=None):
      """Predicting forest cover type from cartographic variables only (no remotely sensed data). The actual forest cover
      type for a given observation (30 x 30 meter cell) was determined from US Forest Service (USFS) Region 2 Resource
      Information System (RIS) data. Independent variables were derived from data originally obtained from US Geological
      Survey (USGS) and USFS data. Data is in raw form (not scaled) and contains binary (0 or 1) columns of data for
      qualitative independent variables (wilderness areas and soil types).
  
      This study area includes four wilderness areas located in the Roosevelt National Forest of northern Colorado.
      These areas represent forests with minimal human-caused disturbances, so that existing forest cover types are more a
      result of ecological processes rather than forest management practices.
  
      It is from [UCI ML Repository](https://archive.ics.uci.edu/ml/datasets/covertype), but with small changes:
      - The one hot encoded columns are converted to categorical - Soli Type and Wilderness type
  
      Args:
          download_dir (str): Directory to download the data to. Defaults to None, which will download
              to ~/.pytorch_tabular/datasets/
      """
      if download_dir is None:
          download_dir = os.path.join(
              os.path.expanduser("~"), ".pytorch_tabular", "datasets"
          )
      if not os.path.exists(download_dir):
          os.makedirs(download_dir)
      file_path = os.path.join(download_dir, "covertype.csv")
      if not os.path.exists(file_path):
          logger.info("Downloading Covertype Dataset")
          url = "https://archive.ics.uci.edu/ml/machine-learning-databases/covtype/covtype.data.gz"
          response = requests.get(url)
          with open(
              os.path.join(download_dir, "covertype.data.gz"), "wb"
          ) as f:
              f.write(response.content)
          with gzip.open(
              os.path.join(download_dir, "covertype.data.gz"), "rb"
          ) as f_in:
              with open(
                  os.path.join(download_dir, "covertype.csv"), "wb"
              ) as f_out:
                  shutil.copyfileobj(f_in, f_out)
          os.remove(os.path.join(download_dir, "covertype.data.gz"))
      df = pd.read_csv(file_path, header=None)
      df.columns = (
          [
              "Elevation",
              "Aspect",
              "Slope",
              "Horizontal_Distance_To_Hydrology",
              "Vertical_Distance_To_Hydrology",
              "Horizontal_Distance_To_Roadways",
              "Hillshade_9am",
              "Hillshade_Noon",
              "Hillshade_3pm",
              "Horizontal_Distance_To_Fire_Points",
          ]
          + [f"Wilderness_Area_{i}" for i in range(4)]
          + [f"Soil_Type_{i}" for i in range(40)]
          + ["Cover_Type"]
      )
      # convert one hot encoded columns to categorical
      df["Wilderness_Area"] = (
          df[[f"Wilderness_Area_{i}" for i in range(4)]]
          .idxmax(axis=1)
          .str.split("_")
          .str[-1]
      )
      df["Soil_Type"] = (
          df[[f"Soil_Type_{i}" for i in range(40)]]
          .idxmax(axis=1)
          .str.split("_")
          .str[-1]
      )
      df.drop(
          [f"Wilderness_Area_{i}" for i in range(4)]
          + [f"Soil_Type_{i}" for i in range(40)],
          axis=1,
          inplace=True,
      )
      continuous_cols = [
          "Elevation",
          "Aspect",
          "Slope",
          "Horizontal_Distance_To_Hydrology",
          "Vertical_Distance_To_Hydrology",
          "Horizontal_Distance_To_Roadways",
          "Hillshade_9am",
          "Hillshade_Noon",
          "Hillshade_3pm",
          "Horizontal_Distance_To_Fire_Points",
      ]
      categorical_cols = ["Wilderness_Area", "Soil_Type"]
      return df, categorical_cols, continuous_cols, "Cover_Type"
  
file_path: pytorch_tabular/src/pytorch_tabular/utils/data_utils.py
imports: import gzip
  import os
  import random
  import shutil
  import numpy
  import pandas
  import requests
  import torch
  from pandas import DataFrame, Series
  from sklearn.cluster import KMeans
  from sklearn.datasets import make_classification, make_regression
  from sklearn.preprocessing import LabelEncoder
  from .logger import get_logger
label_desc: Use image node_id 7 for calling a global function with example usage: load_covertype_dataset(download_dir) and returns: df,  categorical_cols,  continuous_cols,  str