> ## Documentation Index
> Fetch the complete documentation index at: https://docs.graphext.com/llms.txt
> Use this file to discover all available pages before exploring further.

# train_classification

> Train and store a classification model to be loaded at a later point for prediction. 

The output will consist of a new column with the trained model's predictions on the training data,
as well as a saved and named model file that can be used in other projects for prediction of new data.

Optionally, if a second output column name is provided, the model's predicted probabilities will also be
returned.

A detailed guide on how to configure this step for model tuning and performance evaluation can be found
[here](/guides/model_train_eval/).

## Usage

The following examples show how the step can be used in a recipe.

<Accordion title="Examples" icon="code" defaultOpen="true">
  <Tabs>
    <Tab title="Example 1">
      Train a classification model with default parameters. By default, a Catboost model will be trained, but this can be changed to any of the supported models by specifying the `model` parameter (see below for details):

      ```stan theme={null}
      train_classification(ds, {
          "target": "class"
      }) -> (ds.predicted, "my-clf")
      ```
    </Tab>

    <Tab title="Example 2">
      To also return the predicted probabilities, provide a second column name:

      ```stan theme={null}
      train_classification(ds, {
          "target": "class"
      }) -> (ds.predicted, ds.probs, "my-clf")
      ```
    </Tab>

    <Tab title="Example 3">
      To be more explicit about which model parameters to use during training, which parameters to optimize (tune) automatically, and how to evaluate the model's performance, the following example shows a complete configuration. It will explicitly select the CatboostClassifier as the model, set `boosting_type` to "ordered", and select the best combination of `learning_rate` and `depth` from the values specified in the `tune: params` configuration. To find the best parameters, it will perform 5-fold cross-validation on each combination, and will use the scorer `f1_weighted` to measure the performance. `accuracy` will also be measured, but only for the purpose of reporting. The best parameter combination will than be evaluated on a single split of the dataset (with 20% of rows used for testing and 80% for training), with metrics selected automatically. Note that the final model will always be re-trained on the whole dataset!

      ```stan theme={null}
      train_classification(ds, {
        "target": "label_col",
        "model": "CatboostClassifier",
        "params": {
          "boosting_type": "ordered"
        },
        "tune": {
          "strategy": "grid",
          "params": {
            "learning_rate": [0.03, 0.1],
            "depth": [4, 6, 10]
          },
          "validate": {
            "n_splits": 5,
            "metrics": ["f1_weighted", "accuracy"]
          },
          "scorer": "f1_weighted"
        },
        "validate": {
          "n_splits": 1,
          "test_size": 0.2
        }
      }) -> (ds.predicted, "my-clf")
      ```
    </Tab>

    <Tab title="Signature">
      General syntax for using the step in a recipe. Shows the inputs and outputs the step is expected to receive and will produce respectively. For futher details see sections below.

      ```stan theme={null}
      train_classification(ds: dataset, {
          "param": value,
          ...
      }) -> (*predicted: column, model: model_classification[ds])
      ```
    </Tab>
  </Tabs>
</Accordion>

## Inputs & Outputs

The following are the inputs expected by the step and the outputs it produces. These are generally
columns (`ds.first_name`), datasets (`ds` or `ds[["first_name", "last_name"]]`) or models (referenced
by name e.g. `"churn-clf"`).

<Accordion title="Inputs" icon="right-to-bracket">
  <ParamField path="ds" type="dataset" required>
    Should contain the target column and the feature columns you wish to use in the model.
  </ParamField>
</Accordion>

<Accordion title="Outputs" icon="right-from-bracket">
  <ParamField path="*predicted" type="column">
    One or two columns containing the model's predictions. If two column names are provided, the second column
    will contain the model's predicted probabilities.
  </ParamField>

  <ParamField path="model" type="file[model_classification[ds]]" required>
    Zip file containing the trained model and associated information.
  </ParamField>

  <ParamField path="info" type="file.hidden" required />
</Accordion>

## Configuration

The following parameters can be used to configure the behaviour of the step by including them in
a json object as the last "input" to the step, i.e. `step(..., {"param": "value", ...}) -> (output)`.

<Accordion title="Parameters" defaultOpen="true" icon="sliders">
  <Tabs>
    <Tab title="CatboostClassifier">
      <ParamField path="model" type="string" default="CatboostClassifier">
        Train a [Catboost classifier](https://catboost.ai/docs/).
        I.e. gradient boosted decision trees with support for categorical variables and missing values.
      </ParamField>

      <ParamField path="target" type="string (ds.column:category|boolean)" required>
        Target variable (labels).
        Name of the column that contains your target values (labels).
      </ParamField>

      <ParamField path="positive_class" type="[string, null]">
        Name of the positive class.
        In *binary* classification, usually the class you're most interested in, for example the label/class
        corresponding to successful lead conversion in a lead score model, the class corresponding to a
        customer who has churned in a churn prediction model, etc.

        If provided, will automaticall measure the performance (accuracy, precision, recall) of the model on this
        class, in addition to averages across all classes. If not provided, only summary metrics will be reported.
      </ParamField>

      <ParamField path="max_classes" type="integer" default="10">
        Maximum number of classes in the target variable.
        If there are more classes than this, the least frequent classes will be grouped together into a single class
        called "others". Reducing the number of classes in the target variable can help improve model performance,
        especially when the number of classes is very large, some classes are very rare, or the dataset doesn't have
        sufficient samples for all classes. Raising this significantly might lead to much longer training times.

        Values must be in the following range:

        ```javascript theme={null}
        2 ≤ max_classes ≤ 100
        ```
      </ParamField>

      <ParamField path="feature_importance" type="[string, boolean, null]" default="native">
        Importance of each feature in the model.
        Whether and how to measure each feature's contribution to the model's predictions. The higher the value,
        the more important the feature was in the model. Only relative values are meaningful, i.e. the importance
        of a feature relative to other features in the model.

        Also note that feature importance is usually meaningful only for models that fit the data well.

        The default (`null`, `true` or `"native"`) uses the classifier's native feature importance measure, e.g.
        [prediction-value-change](https://catboost.ai/en/docs/concepts/fstr#regular-feature-importance) in the case
        of Catboost, [Gini importance](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.feature_importances_)
        in the case of scikit-learn's DecisionTreeClassifier, and the mean of absolute coefficients in the case of
        logistic regression.

        When set to `"permutation"`, uses [permutation importance](https://scikit-learn.org/stable/modules/permutation_importance.html),
        i.e. measures the decrease in model score when a single feature's values are randomly shuffled. This is
        considerably slower than native feature importance (the model needs to be evaluated an additional k\*n times,
        where k is the number of features and n the number of repetitions to average over). On the positive side it is
        model-agnostic and doesn't suffer from bias towards high cardinality features (like some tree-based feature
        importances). On the negative side, it can be sensitive to strongly correlated features, as the unshuffled
        correlated variable is still available to the model when shuffling the original variable.

        When set to `false`, no feature importance will be calculated.

        Values must be one of the following:

        * `True`
        * `False`
        * `native`
        * `permutation`
        * `null`
      </ParamField>

      <ParamField path="encode_features" type="boolean" default="true">
        Toggle encoding of feature columns.
        When enabled, Graphext will auto-convert any column types to the numeric type before
        fitting the model. How this conversion is done can be configured using the `feature_encoder`
        option below.

        <Warning>If disabled, any model trained in this step will assume that input data
        is already in an appropriate format (e.g. numerical and not containing any missing values).</Warning>
      </ParamField>

      <ParamField path="feature_encoder" type="[null, object]">
        Configures encoding of feature columns.
        By default (`null`), Graphext chooses automatically how to convert any column types the model
        may not understand natively to a numeric type.

        A configuration object can be passed instead to overwrite specific parameter values with respect
        to their default values.

        <Accordion title="Properties">
          <ParamField path="number" type="object">
            Numeric encoder.
            Configures encoding of numeric features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="scaler_params" type="object">
                Further parameters passed to the `scaler` function.
                Details depend no the particular scaler used.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="bool" type="object">
            Boolean encoder.
            Configures encoding of boolean features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ordinal" type="object">
            Ordinal encoder.
            Configures encoding of categorical features that have a natural order.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="category" type="[object, object]">
            Category encoder.
            May contain either a single configuration for all categorical variables, or two different configurations
            for low- and high-cardinality variables. For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple category encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="imputer" type="[null, string]">
                    Whether and how to impute (replace/fill) missing values.

                    Values must be one of the following:

                    * `MostFrequent`
                    * `Const`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of unique categories to encode.
                    Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                    "Others" category.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories.

                    Values must be one of the following:

                    `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    Whether and how to scale the final numerical values (across a single column).

                    Values must be one of the following:

                    * `Standard`
                    * `Robust`
                    * `KNN`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional category encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for categories with fewer than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="multilabel" type="[object, object]">
            Multilabel encoder.
            Configures encoding of multivalued categorical features (variable length lists of categories,
            or the semantic type `list[category]` for short). May contain either a single configuration for
            all multilabel variables, or two different configurations for low- and high-cardinality variables.
            For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple multilabel encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories/labels in multilabel (list\[category]) columns.

                    Values must be one of the following:

                    * `Binarizer`
                    * `TfIdf`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of categories/labels to encode.
                    If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                    using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                    When applied together with (after a) Tf-Idf encoding, this performs a kind of
                    [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    How to scale the encoded (numerical columns).

                    Values must be one of the following:

                    * `Euclidean`
                    * `KNN`
                    * `Norm`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional multilabel encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for mulitabel columns with fewer than `cardinality_threshold` unique categories/labels.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="datetime" type="object">
            Datetime encoder.
            Configures encoding of datetime (timestamp) features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="components" type="array[string]">
                A list of numerical components to extract.
                Will create one numeric column for each component.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    `day` `dayofweek` `dayofyear` `hour` `minute` `month` `quarter` `season` `second` `week` `weekday` `weekofyear` `year`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="cycles" type="array[string]">
                A list of cyclical time features to extract.
                "Cycles" are numerical transformations of features that should be represented on a circle. E.g. months,
                ranging from 1 to 12, should be arranged such that 12 and 1 are next to each other, rather than on
                opposite ends of a linear scale. We represent such cyclical time features on a circle by creating two
                columns for each original feature: the sin and cos of the numerical feature after appropriate scaling.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    * `day`
                    * `dayofweek`
                    * `dayofyear`
                    * `hour`
                    * `month`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="epoch" type="[null, boolean]">
                Whether to include the epoch as new feature (seconds since 01/01/1970).
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="component_scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="vector_scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="embedding" type="object">
            Embedding/vector encoder.
            Configures encoding of multivalued numerical features (variable length lists of numbers, i.e. vectors, or the semantic type `list[number]` for short).

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="text" type="object">
            Text encoder.
            Configures encoding of text (natural language) features. Currently only allows
            [Tf-Idf](https://en.wikipedia.org/wiki/Tf%E2%80%93idf) embeddings to represent texts. If you wish
            to use other embeddings, e.g. semantic, Word2Vec etc., transform your text column first using
            another step, and then use that result instead of the original texts.

            <Warning>Texts are *excluded* by default from the overall encoding of the dataset. See parameter
            `include_text_features` below to active it.</Warning>

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="encoder_params" type="object">
                Parameters to be passed to the text encoder (Tf-Idf parameters only for now).
                See [scikit-learn's documentation](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html)
                for detailed parameters and their explanation.
              </ParamField>

              <ParamField path="n_components" type="integer">
                How many output features to generate.
                The resulting Tf-Idf vectors will be reduced to these many dimensions (columns) using scikit-learn's
                [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                This performs a kind of [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).
                By default we will reduce to 200 components.

                Values must be in the following range:

                ```javascript theme={null}
                2 ≤ n_components ≤ 1024
                ```
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="include_text_features" type="boolean" default="false">
        Whether to include or ignore text columns during the processing of input data.
        Enabling this will convert texts to their TfIdf representation. Each text will be
        converted to an N-dimensional vector in which each component measures the relative
        "over-representation" of a specific word (or n-gram) relative to its overall
        frequency in the whole dataset. This is disabled by default because it will
        often be better to convert texts explicitly using a previous step, such as
        `embed_text` or `embed_text_with_model`.
      </ParamField>

      <ParamField path="params" type="object">
        CatBoost configuration parameters.
        You can check the official documentation for more details about Catboost's parameters [here](https://catboost.ai/en/docs/references/training-parameters/).

        <Accordion title="Properties">
          <ParamField path="depth" type="integer" default="6">
            The maximum depth of the tree.

            Values must be in the following range:

            ```javascript theme={null}
            2 ≤ depth ≤ 16
            ```
          </ParamField>

          <ParamField path="iterations" type="[integer, null]" default="1000">
            Number of iterations.
            The maximum number of trees that can be built when solving machine learning problems. When using other parameters that limit the number of iterations, the final number of trees may be less than the number specified in this parameter.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ iterations < inf
            ```
          </ParamField>

          <ParamField path="one_hot_max_size" type="integer" default="10">
            Maximum cardinality of variables to be one-hot encoded.
            Use one-hot encoding for all categorical features with a number of different values less than or equal to this value. Other variables will be target-encoded. Note that one-hot encoding is faster than the alternatives, so decreasing this value makes it more likely slower methods will be used. See [CatBoost details](https://catboost.ai/docs/concepts/algorithm-main-stages_cat-to-numberic.html) for further information.

            Values must be in the following range:

            ```javascript theme={null}
            2 ≤ one_hot_max_size < inf
            ```
          </ParamField>

          <ParamField path="max_ctr_complexity" type="number" default="2">
            The maximum number of features that can be combined when transforming categorical variables.
            Each resulting combination consists of one or more categorical features and can optionally contain binary features in the following form: “numeric feature > value”.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ max_ctr_complexity ≤ 4
            ```
          </ParamField>

          <ParamField path="l2_leaf_reg" type="number" default="3.0">
            Coefficient at the L2 regularization term of the cost function.

            Values must be in the following range:

            ```javascript theme={null}
            0.0 < l2_leaf_reg < inf
            ```
          </ParamField>

          <ParamField path="border_count" type="integer" default="254">
            The number of splits for numerical features.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ border_count ≤ 65535
            ```
          </ParamField>

          <ParamField path="random_strength" type="number" default="1.0">
            The amount of randomness to use for scoring splits.
            Use this parameter to avoid overfitting the model. The value multiplies the variance of a random variable (with
            zero mean) that is added to the score used to select splits when a tree is grown.

            Values must be in the following range:

            ```javascript theme={null}
            0 < random_strength < inf
            ```
          </ParamField>

          <ParamField path="nan_mode" type="string" default="Min">
            The method for  processing missing values in the input dataset.
            Possible values:

            * “Forbidden”:
              Missing values are not supported, their presence is interpreted as an error.
            * “Min”:
              Missing values are processed as the minimum value (less than all other values) for the feature.
              It is guaranteed that a split that separates missing values from all other values is considered
              when selecting trees.
            * “Max”:
              Missing values are processed as the maximum value (greater than all other values) for the feature.
              It is guaranteed that a split that separates missing values from all other values is considered when
              selecting trees.

            Using the Min or Max value of this parameter guarantees that a split between missing values and other
            values is considered when selecting a new split in the tree.

            Values must be one of the following:

            * `Forbidden`
            * `Min`
            * `Max`
          </ParamField>

          <ParamField path="boosting_type" type="string" default="Plain">
            Boosting type.
            Boosting scheme. Possible values are

            * Ordered: Usually provides better quality on small datasets, but it may be slower than the Plain scheme.
            * Plain: The classic gradient boosting scheme.

            Values must be one of the following:

            * `Ordered`
            * `Plain`
          </ParamField>

          <ParamField path="rsm" type="[number, null]">
            Random subspace method.
            The percentage of features to use at each split selection, when features are selected over again at random. The value `null` is equivalent to 1.0 (all features). You can set this to values \< 1.0 when the dataset has many features (e.g. > 20) to speed up training.

            Values must be in the following range:

            ```javascript theme={null}
            0 < rsm ≤ 1.0
            ```
          </ParamField>

          <ParamField path="random_seed" type="integer" default="0">
            The random seed used for training.
          </ParamField>

          <ParamField path="used_ram_limit" type="[string, null]">
            Whether and how to limit memory usage.
            Select the maximum Ram used using strings like "2GB" or "100mb" (non case\_sensitive).
          </ParamField>

          <ParamField path="auto_class_weights" type="[string, null]" default="Balanced">
            Whether and how to assign weights to different predicted classes.
            The options are:

            * null: No class weighting
            * Balanced: Inversely proportional to the number of samples/rows in each class
            * SqrtBalanced: Using the square root of the "Balanced" option.

            Values must be one of the following:

            * `Balanced`
            * `SqrtBalanced`
            * `None`
            * `None`
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="validate" type="[object, null]">
        Configure model validation.
        Allows evaluation of model performance via [cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html)
        using custom metrics. If not specified, will by default perform 5-fold cross-validation with automatically selected
        metrics.

        <Accordion title="Properties">
          <ParamField path="n_splits" type="[integer, null]" default="5">
            Number of train-test splits to evaluate the model on.
            Will split the dataset into training and test set `n_splits` times, train on the former
            and evaluate on the latter using specified or automatically selected `metrics`.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ n_splits < inf
            ```
          </ParamField>

          <ParamField path="test_size" type="[number, null]">
            What proportion of the data to use for testing in each split.
            If `null` or not provided, will use [k-fold cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html#k-fold)
            to split the dataset. E.g. if `n_splits` is 5, the dataset will be split into 5 equal-sized parts.
            For five iterations four parts will then be used for training and the remaining part for testing.
            If `test_size` is a number between 0 and 1, in contrast, validation is done using a
            [shuffle-split](https://scikit-learn.org/stable/modules/cross_validation.html#shufflesplit)
            approach. Here, instead of splitting the data into `n_splits` equal parts up front, in each iteration
            we randomize the data and sample a proportion equal to `test_size` to use for evaluation and the remaining
            rows for training.

            Values must be in the following range:

            ```javascript theme={null}
            0 < test_size < 1
            ```
          </ParamField>

          <ParamField path="time_split" type="boolean" default="false">
            Whether to split the data by time.
            Most recent data will be used for testing and previous data for training. Assumes data is passed
            already sorted ascending by time.
          </ParamField>

          <ParamField path="metrics" type="[array[string], null]">
            One or more metrics/scoring functions to evaluate the model with.
            When none is provided, will measure default metrics appropriate for the prediction task
            (classification vs. regression determined from model or type of target column). See
            [sklearn model evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html#common-cases-predefined-values)
            for further details.

            <Accordion title="Array items">
              <ParamField path="Item" type="string">
                Each item in array.

                Values must be one of the following:

                `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="tune" type="object">
        Configure hypertuning.
        Configures the optimization of model hyper-parameters via cross-validated grid- or randomized search.

        <Accordion title="Properties">
          <ParamField path="strategy" type="string" default="grid">
            Which search strategy to use for optimization.
            Grid search explores all possible combinations of parameters specified in `params`.
            Randomized search, on the other hand, randomly samples `iterations` parameter combinations
            from the distributions specified in `params`.

            Values must be one of the following:

            * `grid`
            * `random`
          </ParamField>

          <ParamField path="iterations" type="integer" default="10">
            How many randomly sampled parameter combinations to test in randomized search.

            Values must be in the following range:

            ```javascript theme={null}
            1 < iterations < inf
            ```
          </ParamField>

          <ParamField path="validate" type="[object, null]">
            Configure model validation.
            Allows evaluation of model performance via [cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html)
            using custom metrics. If not specified, will by default perform 5-fold cross-validation with automatically selected
            metrics.

            <Accordion title="Properties">
              <ParamField path="n_splits" type="[integer, null]" default="5">
                Number of train-test splits to evaluate the model on.
                Will split the dataset into training and test set `n_splits` times, train on the former
                and evaluate on the latter using specified or automatically selected `metrics`.

                Values must be in the following range:

                ```javascript theme={null}
                1 ≤ n_splits < inf
                ```
              </ParamField>

              <ParamField path="test_size" type="[number, null]">
                What proportion of the data to use for testing in each split.
                If `null` or not provided, will use [k-fold cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html#k-fold)
                to split the dataset. E.g. if `n_splits` is 5, the dataset will be split into 5 equal-sized parts.
                For five iterations four parts will then be used for training and the remaining part for testing.
                If `test_size` is a number between 0 and 1, in contrast, validation is done using a
                [shuffle-split](https://scikit-learn.org/stable/modules/cross_validation.html#shufflesplit)
                approach. Here, instead of splitting the data into `n_splits` equal parts up front, in each iteration
                we randomize the data and sample a proportion equal to `test_size` to use for evaluation and the remaining
                rows for training.

                Values must be in the following range:

                ```javascript theme={null}
                0 < test_size < 1
                ```
              </ParamField>

              <ParamField path="time_split" type="boolean" default="false">
                Whether to split the data by time.
                Most recent data will be used for testing and previous data for training. Assumes data is passed
                already sorted ascending by time.
              </ParamField>

              <ParamField path="metrics" type="[array[string], null]">
                One or more metrics/scoring functions to evaluate the model with.
                When none is provided, will measure default metrics appropriate for the prediction task
                (classification vs. regression determined from model or type of target column). See
                [sklearn model evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html#common-cases-predefined-values)
                for further details.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
                  </ParamField>
                </Accordion>
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="scorer" type="string">
            Each item in array.

            Values must be one of the following:

            `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
          </ParamField>

          <ParamField path="params" type="object">
            The parameter values to explore.
            Allows tuning of any and all of the parameters that can be set also as constants in the
            "params" attribute.

            Keys in this object should be strings identifying parameter names, and values should be
            *lists* of values to explore for that parameter. E.g. `"depth": [3, 5, 7]`.

            <Accordion title="Properties">
              <ParamField path="depth" type="array[integer]">
                List of depths values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="6">
                    The maximum depth of the tree.

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ Item ≤ 16
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="iterations" type="array[['integer', 'null']]">
                List of iterations values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[integer, null]" default="1000">
                    Number of iterations.
                    The maximum number of trees that can be built when solving machine learning problems. When using other parameters that limit the number of iterations, the final number of trees may be less than the number specified in this parameter.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="one_hot_max_size" type="array[integer]">
                List of values configuring max cardinality for one-hot encoding.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="10">
                    Maximum cardinality of variables to be one-hot encoded.
                    Use one-hot encoding for all categorical features with a number of different values less than or equal to this value. Other variables will be target-encoded. Note that one-hot encoding is faster than the alternatives, so decreasing this value makes it more likely slower methods will be used. See [CatBoost details](https://catboost.ai/docs/concepts/algorithm-main-stages_cat-to-numberic.html) for further information.

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_ctr_complexity" type="array[number]">
                List of values configuring variable combination complexity.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="2">
                    The maximum number of features that can be combined when transforming categorical variables.
                    Each resulting combination consists of one or more categorical features and can optionally contain binary features in the following form: “numeric feature > value”.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item ≤ 4
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="l2_leaf_reg" type="array[number]">
                List of leaf regularization strengths.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="3.0">
                    Coefficient at the L2 regularization term of the cost function.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0.0 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="border_count" type="array[integer]">
                List of border counts.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="254">
                    The number of splits for numerical features.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item ≤ 65535
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="random_strength" type="array[number]">
                List of random strengths.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="1.0">
                    The amount of randomness to use for scoring splits.
                    Use this parameter to avoid overfitting the model. The value multiplies the variance of a random variable (with
                    zero mean) that is added to the score used to select splits when a tree is grown.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="seed" type="integer">
        Seed for random number generator ensuring reproducibility.

        Values must be in the following range:

        ```javascript theme={null}
        0 ≤ seed < inf
        ```
      </ParamField>

      <ParamField path="sort" type="object">
        Sort the data before training.
        If the data is not already sorted by time, you can sort it here. This is useful when you want to split the data
        by time, for example to train on older data and test on newer data (see the `time_split` parameter in validation
        configurations). If the data is already sorted by time, you can ignore this parameter.

        <Accordion title="Properties">
          <ParamField path="columns" type="[string, array[string]]">
            One or more column to sort by.

            <Accordion title="Array items">
              <ParamField path="Item" type="string (ds.column)">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ascending" type="[boolean, array[boolean]]" default="true">
            Sort order.
            Whether to sort in ascending or descending order. If the single value `true` is provided, or no value is specified,
            all columns will be sorted in ascending order. If a single `false` is provided, all columns will be sorted in descending
            order. If an array of booleans is provided, each column will be sorted according to the corresponding boolean value.

            <Accordion title="Array items">
              <ParamField path="Item" type="boolean">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>
    </Tab>

    <Tab title="HGBoostClassifier">
      <ParamField path="model" type="string" default="HGBoostClassifier">
        Train a [Histogram-based gradient-boosting classification tree](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.HistGradientBoostingClassifier.html).
        Scikit-learn native boosted trees similar to Catboost or LightGBM, with support for categorical variables,
        missing values and early stopping.
      </ParamField>

      <ParamField path="target" type="string (ds.column:category|boolean)" required>
        Target variable (labels).
        Name of the column that contains your target values (labels).
      </ParamField>

      <ParamField path="positive_class" type="[string, null]">
        Name of the positive class.
        In *binary* classification, usually the class you're most interested in, for example the label/class
        corresponding to successful lead conversion in a lead score model, the class corresponding to a
        customer who has churned in a churn prediction model, etc.

        If provided, will automaticall measure the performance (accuracy, precision, recall) of the model on this
        class, in addition to averages across all classes. If not provided, only summary metrics will be reported.
      </ParamField>

      <ParamField path="max_classes" type="integer" default="10">
        Maximum number of classes in the target variable.
        If there are more classes than this, the least frequent classes will be grouped together into a single class
        called "others". Reducing the number of classes in the target variable can help improve model performance,
        especially when the number of classes is very large, some classes are very rare, or the dataset doesn't have
        sufficient samples for all classes. Raising this significantly might lead to much longer training times.

        Values must be in the following range:

        ```javascript theme={null}
        2 ≤ max_classes ≤ 100
        ```
      </ParamField>

      <ParamField path="feature_importance" type="[string, boolean, null]" default="native">
        Importance of each feature in the model.
        Whether and how to measure each feature's contribution to the model's predictions. The higher the value,
        the more important the feature was in the model. Only relative values are meaningful, i.e. the importance
        of a feature relative to other features in the model.

        Also note that feature importance is usually meaningful only for models that fit the data well.

        The default (`null`, `true` or `"native"`) uses the classifier's native feature importance measure, e.g.
        [prediction-value-change](https://catboost.ai/en/docs/concepts/fstr#regular-feature-importance) in the case
        of Catboost, [Gini importance](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.feature_importances_)
        in the case of scikit-learn's DecisionTreeClassifier, and the mean of absolute coefficients in the case of
        logistic regression.

        When set to `"permutation"`, uses [permutation importance](https://scikit-learn.org/stable/modules/permutation_importance.html),
        i.e. measures the decrease in model score when a single feature's values are randomly shuffled. This is
        considerably slower than native feature importance (the model needs to be evaluated an additional k\*n times,
        where k is the number of features and n the number of repetitions to average over). On the positive side it is
        model-agnostic and doesn't suffer from bias towards high cardinality features (like some tree-based feature
        importances). On the negative side, it can be sensitive to strongly correlated features, as the unshuffled
        correlated variable is still available to the model when shuffling the original variable.

        When set to `false`, no feature importance will be calculated.

        Values must be one of the following:

        * `True`
        * `False`
        * `native`
        * `permutation`
        * `null`
      </ParamField>

      <ParamField path="encode_features" type="boolean" default="true">
        Toggle encoding of feature columns.
        When enabled, Graphext will auto-convert any column types to the numeric type before
        fitting the model. How this conversion is done can be configured using the `feature_encoder`
        option below.

        <Warning>If disabled, any model trained in this step will assume that input data
        is already in an appropriate format (e.g. numerical and not containing any missing values).</Warning>
      </ParamField>

      <ParamField path="feature_encoder" type="[null, object]">
        Configures encoding of feature columns.
        By default (`null`), Graphext chooses automatically how to convert any column types the model
        may not understand natively to a numeric type.

        A configuration object can be passed instead to overwrite specific parameter values with respect
        to their default values.

        <Accordion title="Properties">
          <ParamField path="number" type="object">
            Numeric encoder.
            Configures encoding of numeric features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="scaler_params" type="object">
                Further parameters passed to the `scaler` function.
                Details depend no the particular scaler used.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="bool" type="object">
            Boolean encoder.
            Configures encoding of boolean features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ordinal" type="object">
            Ordinal encoder.
            Configures encoding of categorical features that have a natural order.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="category" type="[object, object]">
            Category encoder.
            May contain either a single configuration for all categorical variables, or two different configurations
            for low- and high-cardinality variables. For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple category encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="imputer" type="[null, string]">
                    Whether and how to impute (replace/fill) missing values.

                    Values must be one of the following:

                    * `MostFrequent`
                    * `Const`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of unique categories to encode.
                    Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                    "Others" category.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories.

                    Values must be one of the following:

                    `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    Whether and how to scale the final numerical values (across a single column).

                    Values must be one of the following:

                    * `Standard`
                    * `Robust`
                    * `KNN`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional category encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for categories with fewer than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="multilabel" type="[object, object]">
            Multilabel encoder.
            Configures encoding of multivalued categorical features (variable length lists of categories,
            or the semantic type `list[category]` for short). May contain either a single configuration for
            all multilabel variables, or two different configurations for low- and high-cardinality variables.
            For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple multilabel encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories/labels in multilabel (list\[category]) columns.

                    Values must be one of the following:

                    * `Binarizer`
                    * `TfIdf`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of categories/labels to encode.
                    If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                    using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                    When applied together with (after a) Tf-Idf encoding, this performs a kind of
                    [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    How to scale the encoded (numerical columns).

                    Values must be one of the following:

                    * `Euclidean`
                    * `KNN`
                    * `Norm`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional multilabel encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for mulitabel columns with fewer than `cardinality_threshold` unique categories/labels.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="datetime" type="object">
            Datetime encoder.
            Configures encoding of datetime (timestamp) features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="components" type="array[string]">
                A list of numerical components to extract.
                Will create one numeric column for each component.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    `day` `dayofweek` `dayofyear` `hour` `minute` `month` `quarter` `season` `second` `week` `weekday` `weekofyear` `year`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="cycles" type="array[string]">
                A list of cyclical time features to extract.
                "Cycles" are numerical transformations of features that should be represented on a circle. E.g. months,
                ranging from 1 to 12, should be arranged such that 12 and 1 are next to each other, rather than on
                opposite ends of a linear scale. We represent such cyclical time features on a circle by creating two
                columns for each original feature: the sin and cos of the numerical feature after appropriate scaling.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    * `day`
                    * `dayofweek`
                    * `dayofyear`
                    * `hour`
                    * `month`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="epoch" type="[null, boolean]">
                Whether to include the epoch as new feature (seconds since 01/01/1970).
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="component_scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="vector_scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="embedding" type="object">
            Embedding/vector encoder.
            Configures encoding of multivalued numerical features (variable length lists of numbers, i.e. vectors, or the semantic type `list[number]` for short).

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="text" type="object">
            Text encoder.
            Configures encoding of text (natural language) features. Currently only allows
            [Tf-Idf](https://en.wikipedia.org/wiki/Tf%E2%80%93idf) embeddings to represent texts. If you wish
            to use other embeddings, e.g. semantic, Word2Vec etc., transform your text column first using
            another step, and then use that result instead of the original texts.

            <Warning>Texts are *excluded* by default from the overall encoding of the dataset. See parameter
            `include_text_features` below to active it.</Warning>

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="encoder_params" type="object">
                Parameters to be passed to the text encoder (Tf-Idf parameters only for now).
                See [scikit-learn's documentation](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html)
                for detailed parameters and their explanation.
              </ParamField>

              <ParamField path="n_components" type="integer">
                How many output features to generate.
                The resulting Tf-Idf vectors will be reduced to these many dimensions (columns) using scikit-learn's
                [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                This performs a kind of [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).
                By default we will reduce to 200 components.

                Values must be in the following range:

                ```javascript theme={null}
                2 ≤ n_components ≤ 1024
                ```
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="include_text_features" type="boolean" default="false">
        Whether to include or ignore text columns during the processing of input data.
        Enabling this will convert texts to their TfIdf representation. Each text will be
        converted to an N-dimensional vector in which each component measures the relative
        "over-representation" of a specific word (or n-gram) relative to its overall
        frequency in the whole dataset. This is disabled by default because it will
        often be better to convert texts explicitly using a previous step, such as
        `embed_text` or `embed_text_with_model`.
      </ParamField>

      <ParamField path="params" type="object">
        Histogram-based gradient boosting configuration parameters.
        You can check the official documentation for more details about the model's parameters [here](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.HistGradientBoostingClassifier.html).

        <Accordion title="Properties">
          <ParamField path="class_weight" type="[string, null]">
            Whether to assign weights to different predicted classes.
            If `null` (default), applies no class weighting. If "balanced", assigns weights inversely proportional to the number of samples/rows in each class.

            Values must be one of the following:

            * `balanced`
            * `None`
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="validate" type="[object, null]">
        Configure model validation.
        Allows evaluation of model performance via [cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html)
        using custom metrics. If not specified, will by default perform 5-fold cross-validation with automatically selected
        metrics.

        <Accordion title="Properties">
          <ParamField path="n_splits" type="[integer, null]" default="5">
            Number of train-test splits to evaluate the model on.
            Will split the dataset into training and test set `n_splits` times, train on the former
            and evaluate on the latter using specified or automatically selected `metrics`.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ n_splits < inf
            ```
          </ParamField>

          <ParamField path="test_size" type="[number, null]">
            What proportion of the data to use for testing in each split.
            If `null` or not provided, will use [k-fold cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html#k-fold)
            to split the dataset. E.g. if `n_splits` is 5, the dataset will be split into 5 equal-sized parts.
            For five iterations four parts will then be used for training and the remaining part for testing.
            If `test_size` is a number between 0 and 1, in contrast, validation is done using a
            [shuffle-split](https://scikit-learn.org/stable/modules/cross_validation.html#shufflesplit)
            approach. Here, instead of splitting the data into `n_splits` equal parts up front, in each iteration
            we randomize the data and sample a proportion equal to `test_size` to use for evaluation and the remaining
            rows for training.

            Values must be in the following range:

            ```javascript theme={null}
            0 < test_size < 1
            ```
          </ParamField>

          <ParamField path="time_split" type="boolean" default="false">
            Whether to split the data by time.
            Most recent data will be used for testing and previous data for training. Assumes data is passed
            already sorted ascending by time.
          </ParamField>

          <ParamField path="metrics" type="[array[string], null]">
            One or more metrics/scoring functions to evaluate the model with.
            When none is provided, will measure default metrics appropriate for the prediction task
            (classification vs. regression determined from model or type of target column). See
            [sklearn model evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html#common-cases-predefined-values)
            for further details.

            <Accordion title="Array items">
              <ParamField path="Item" type="string">
                Each item in array.

                Values must be one of the following:

                `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="tune" type="object">
        Configure hypertuning.
        Configures the optimization of model hyper-parameters via cross-validated grid- or randomized search.

        <Accordion title="Properties">
          <ParamField path="strategy" type="string" default="grid">
            Which search strategy to use for optimization.
            Grid search explores all possible combinations of parameters specified in `params`.
            Randomized search, on the other hand, randomly samples `iterations` parameter combinations
            from the distributions specified in `params`.

            Values must be one of the following:

            * `grid`
            * `random`
          </ParamField>

          <ParamField path="iterations" type="integer" default="10">
            How many randomly sampled parameter combinations to test in randomized search.

            Values must be in the following range:

            ```javascript theme={null}
            1 < iterations < inf
            ```
          </ParamField>

          <ParamField path="validate" type="[object, null]">
            Configure model validation.
            Allows evaluation of model performance via [cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html)
            using custom metrics. If not specified, will by default perform 5-fold cross-validation with automatically selected
            metrics.

            <Accordion title="Properties">
              <ParamField path="n_splits" type="[integer, null]" default="5">
                Number of train-test splits to evaluate the model on.
                Will split the dataset into training and test set `n_splits` times, train on the former
                and evaluate on the latter using specified or automatically selected `metrics`.

                Values must be in the following range:

                ```javascript theme={null}
                1 ≤ n_splits < inf
                ```
              </ParamField>

              <ParamField path="test_size" type="[number, null]">
                What proportion of the data to use for testing in each split.
                If `null` or not provided, will use [k-fold cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html#k-fold)
                to split the dataset. E.g. if `n_splits` is 5, the dataset will be split into 5 equal-sized parts.
                For five iterations four parts will then be used for training and the remaining part for testing.
                If `test_size` is a number between 0 and 1, in contrast, validation is done using a
                [shuffle-split](https://scikit-learn.org/stable/modules/cross_validation.html#shufflesplit)
                approach. Here, instead of splitting the data into `n_splits` equal parts up front, in each iteration
                we randomize the data and sample a proportion equal to `test_size` to use for evaluation and the remaining
                rows for training.

                Values must be in the following range:

                ```javascript theme={null}
                0 < test_size < 1
                ```
              </ParamField>

              <ParamField path="time_split" type="boolean" default="false">
                Whether to split the data by time.
                Most recent data will be used for testing and previous data for training. Assumes data is passed
                already sorted ascending by time.
              </ParamField>

              <ParamField path="metrics" type="[array[string], null]">
                One or more metrics/scoring functions to evaluate the model with.
                When none is provided, will measure default metrics appropriate for the prediction task
                (classification vs. regression determined from model or type of target column). See
                [sklearn model evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html#common-cases-predefined-values)
                for further details.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
                  </ParamField>
                </Accordion>
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="scorer" type="string">
            Each item in array.

            Values must be one of the following:

            `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
          </ParamField>

          <ParamField path="params" type="object">
            The parameter values to explore.
            Allows tuning of parameters that can be set also as constants in the "params" attribute.

            Keys in this object should be strings identifying parameter names, and values should be
            *lists* of values to explore for that parameter. E.g. `"depth": [3, 5, 7]`.

            <Accordion title="Properties">
              <ParamField path="depth" type="array[integer]">
                List of depths values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="6">
                    The maximum depth of the tree.

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ Item ≤ 16
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="iterations" type="array[['integer', 'null']]">
                List of iterations values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[integer, null]" default="1000">
                    Number of iterations.
                    The maximum number of trees that can be built when solving machine learning problems. When using other parameters that limit the number of iterations, the final number of trees may be less than the number specified in this parameter.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="one_hot_max_size" type="array[integer]">
                List of values configuring max cardinality for one-hot encoding.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="10">
                    Maximum cardinality of variables to be one-hot encoded.
                    Use one-hot encoding for all categorical features with a number of different values less than or equal to this value. Other variables will be target-encoded. Note that one-hot encoding is faster than the alternatives, so decreasing this value makes it more likely slower methods will be used. See [CatBoost details](https://catboost.ai/docs/concepts/algorithm-main-stages_cat-to-numberic.html) for further information.

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_ctr_complexity" type="array[number]">
                List of values configuring variable combination complexity.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="2">
                    The maximum number of features that can be combined when transforming categorical variables.
                    Each resulting combination consists of one or more categorical features and can optionally contain binary features in the following form: “numeric feature > value”.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item ≤ 4
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="l2_leaf_reg" type="array[number]">
                List of leaf regularization strengths.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="3.0">
                    Coefficient at the L2 regularization term of the cost function.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0.0 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="border_count" type="array[integer]">
                List of border counts.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="254">
                    The number of splits for numerical features.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item ≤ 65535
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="random_strength" type="array[number]">
                List of random strengths.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="1.0">
                    The amount of randomness to use for scoring splits.
                    Use this parameter to avoid overfitting the model. The value multiplies the variance of a random variable (with
                    zero mean) that is added to the score used to select splits when a tree is grown.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="seed" type="integer">
        Seed for random number generator ensuring reproducibility.

        Values must be in the following range:

        ```javascript theme={null}
        0 ≤ seed < inf
        ```
      </ParamField>

      <ParamField path="sort" type="object">
        Sort the data before training.
        If the data is not already sorted by time, you can sort it here. This is useful when you want to split the data
        by time, for example to train on older data and test on newer data (see the `time_split` parameter in validation
        configurations). If the data is already sorted by time, you can ignore this parameter.

        <Accordion title="Properties">
          <ParamField path="columns" type="[string, array[string]]">
            One or more column to sort by.

            <Accordion title="Array items">
              <ParamField path="Item" type="string (ds.column)">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ascending" type="[boolean, array[boolean]]" default="true">
            Sort order.
            Whether to sort in ascending or descending order. If the single value `true` is provided, or no value is specified,
            all columns will be sorted in ascending order. If a single `false` is provided, all columns will be sorted in descending
            order. If an array of booleans is provided, each column will be sorted according to the corresponding boolean value.

            <Accordion title="Array items">
              <ParamField path="Item" type="boolean">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>
    </Tab>

    <Tab title="LogisticRegression">
      <ParamField path="model" type="string" default="LogisticRegression">
        Trains a logistic regression.
        The specific kind of logistic regression trained here uses "elastic net" regularization, which
        allows for a blend of ridge and lasso penalties to prevent overfitting. The mix as well as the
        strength of this regularization is automatically tuned using 5-fold cross-validation. See
        [sklearn's LogisticRegressionCV](https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegressionCV.html)
        for further details.
      </ParamField>

      <ParamField path="target" type="string (ds.column:category|boolean)" required>
        Target variable (labels).
        Name of the column that contains your target values (labels).
      </ParamField>

      <ParamField path="positive_class" type="[string, null]">
        Name of the positive class.
        In *binary* classification, usually the class you're most interested in, for example the label/class
        corresponding to successful lead conversion in a lead score model, the class corresponding to a
        customer who has churned in a churn prediction model, etc.

        If provided, will automaticall measure the performance (accuracy, precision, recall) of the model on this
        class, in addition to averages across all classes. If not provided, only summary metrics will be reported.
      </ParamField>

      <ParamField path="max_classes" type="integer" default="10">
        Maximum number of classes in the target variable.
        If there are more classes than this, the least frequent classes will be grouped together into a single class
        called "others". Reducing the number of classes in the target variable can help improve model performance,
        especially when the number of classes is very large, some classes are very rare, or the dataset doesn't have
        sufficient samples for all classes. Raising this significantly might lead to much longer training times.

        Values must be in the following range:

        ```javascript theme={null}
        2 ≤ max_classes ≤ 100
        ```
      </ParamField>

      <ParamField path="feature_importance" type="[string, boolean, null]" default="native">
        Importance of each feature in the model.
        Whether and how to measure each feature's contribution to the model's predictions. The higher the value,
        the more important the feature was in the model. Only relative values are meaningful, i.e. the importance
        of a feature relative to other features in the model.

        Also note that feature importance is usually meaningful only for models that fit the data well.

        The default (`null`, `true` or `"native"`) uses the classifier's native feature importance measure, e.g.
        [prediction-value-change](https://catboost.ai/en/docs/concepts/fstr#regular-feature-importance) in the case
        of Catboost, [Gini importance](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.feature_importances_)
        in the case of scikit-learn's DecisionTreeClassifier, and the mean of absolute coefficients in the case of
        logistic regression.

        When set to `"permutation"`, uses [permutation importance](https://scikit-learn.org/stable/modules/permutation_importance.html),
        i.e. measures the decrease in model score when a single feature's values are randomly shuffled. This is
        considerably slower than native feature importance (the model needs to be evaluated an additional k\*n times,
        where k is the number of features and n the number of repetitions to average over). On the positive side it is
        model-agnostic and doesn't suffer from bias towards high cardinality features (like some tree-based feature
        importances). On the negative side, it can be sensitive to strongly correlated features, as the unshuffled
        correlated variable is still available to the model when shuffling the original variable.

        When set to `false`, no feature importance will be calculated.

        Values must be one of the following:

        * `True`
        * `False`
        * `native`
        * `permutation`
        * `null`
      </ParamField>

      <ParamField path="encode_features" type="boolean" default="true">
        Toggle encoding of feature columns.
        When enabled, Graphext will auto-convert any column types to the numeric type before
        fitting the model. How this conversion is done can be configured using the `feature_encoder`
        option below.

        <Warning>If disabled, any model trained in this step will assume that input data
        is already in an appropriate format (e.g. numerical and not containing any missing values).</Warning>
      </ParamField>

      <ParamField path="feature_encoder" type="[null, object]">
        Configures encoding of feature columns.
        By default (`null`), Graphext chooses automatically how to convert any column types the model
        may not understand natively to a numeric type.

        A configuration object can be passed instead to overwrite specific parameter values with respect
        to their default values.

        <Accordion title="Properties">
          <ParamField path="number" type="object">
            Numeric encoder.
            Configures encoding of numeric features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="scaler_params" type="object">
                Further parameters passed to the `scaler` function.
                Details depend no the particular scaler used.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="bool" type="object">
            Boolean encoder.
            Configures encoding of boolean features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ordinal" type="object">
            Ordinal encoder.
            Configures encoding of categorical features that have a natural order.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="category" type="[object, object]">
            Category encoder.
            May contain either a single configuration for all categorical variables, or two different configurations
            for low- and high-cardinality variables. For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple category encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="imputer" type="[null, string]">
                    Whether and how to impute (replace/fill) missing values.

                    Values must be one of the following:

                    * `MostFrequent`
                    * `Const`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of unique categories to encode.
                    Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                    "Others" category.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories.

                    Values must be one of the following:

                    `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    Whether and how to scale the final numerical values (across a single column).

                    Values must be one of the following:

                    * `Standard`
                    * `Robust`
                    * `KNN`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional category encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for categories with fewer than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="multilabel" type="[object, object]">
            Multilabel encoder.
            Configures encoding of multivalued categorical features (variable length lists of categories,
            or the semantic type `list[category]` for short). May contain either a single configuration for
            all multilabel variables, or two different configurations for low- and high-cardinality variables.
            For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple multilabel encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories/labels in multilabel (list\[category]) columns.

                    Values must be one of the following:

                    * `Binarizer`
                    * `TfIdf`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of categories/labels to encode.
                    If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                    using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                    When applied together with (after a) Tf-Idf encoding, this performs a kind of
                    [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    How to scale the encoded (numerical columns).

                    Values must be one of the following:

                    * `Euclidean`
                    * `KNN`
                    * `Norm`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional multilabel encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for mulitabel columns with fewer than `cardinality_threshold` unique categories/labels.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="datetime" type="object">
            Datetime encoder.
            Configures encoding of datetime (timestamp) features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="components" type="array[string]">
                A list of numerical components to extract.
                Will create one numeric column for each component.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    `day` `dayofweek` `dayofyear` `hour` `minute` `month` `quarter` `season` `second` `week` `weekday` `weekofyear` `year`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="cycles" type="array[string]">
                A list of cyclical time features to extract.
                "Cycles" are numerical transformations of features that should be represented on a circle. E.g. months,
                ranging from 1 to 12, should be arranged such that 12 and 1 are next to each other, rather than on
                opposite ends of a linear scale. We represent such cyclical time features on a circle by creating two
                columns for each original feature: the sin and cos of the numerical feature after appropriate scaling.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    * `day`
                    * `dayofweek`
                    * `dayofyear`
                    * `hour`
                    * `month`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="epoch" type="[null, boolean]">
                Whether to include the epoch as new feature (seconds since 01/01/1970).
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="component_scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="vector_scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="embedding" type="object">
            Embedding/vector encoder.
            Configures encoding of multivalued numerical features (variable length lists of numbers, i.e. vectors, or the semantic type `list[number]` for short).

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="text" type="object">
            Text encoder.
            Configures encoding of text (natural language) features. Currently only allows
            [Tf-Idf](https://en.wikipedia.org/wiki/Tf%E2%80%93idf) embeddings to represent texts. If you wish
            to use other embeddings, e.g. semantic, Word2Vec etc., transform your text column first using
            another step, and then use that result instead of the original texts.

            <Warning>Texts are *excluded* by default from the overall encoding of the dataset. See parameter
            `include_text_features` below to active it.</Warning>

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="encoder_params" type="object">
                Parameters to be passed to the text encoder (Tf-Idf parameters only for now).
                See [scikit-learn's documentation](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html)
                for detailed parameters and their explanation.
              </ParamField>

              <ParamField path="n_components" type="integer">
                How many output features to generate.
                The resulting Tf-Idf vectors will be reduced to these many dimensions (columns) using scikit-learn's
                [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                This performs a kind of [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).
                By default we will reduce to 200 components.

                Values must be in the following range:

                ```javascript theme={null}
                2 ≤ n_components ≤ 1024
                ```
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="include_text_features" type="boolean" default="false">
        Whether to include or ignore text columns during the processing of input data.
        Enabling this will convert texts to their TfIdf representation. Each text will be
        converted to an N-dimensional vector in which each component measures the relative
        "over-representation" of a specific word (or n-gram) relative to its overall
        frequency in the whole dataset. This is disabled by default because it will
        often be better to convert texts explicitly using a previous step, such as
        `embed_text` or `embed_text_with_model`.
      </ParamField>

      <ParamField path="params" type="object">
        Model parameters.
        Constant parameters to configure before training.

        <Accordion title="Properties">
          <ParamField path="Cs" type="[integer, array[number]]" default="10">
            Regularization strengths to explore.
            Smaller values specify stronger regularization. If `Cs` is as an integer, a grid of C values are chosen
            in a logarithmic scale between 1e-4 and 1e4.

            Values must be in the following range:

            ```javascript theme={null}
            1 < Cs < inf
            ```

            <Accordion title="Array items">
              <ParamField path="Item" type="number">
                Each item in array.

                Values must be in the following range:

                ```javascript theme={null}
                0 ≤ Item < inf
                ```
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="l1_ratios" type="[array[number], null]" default="[0.1, 0.5, 0.7, 0.9, 0.95, 0.99, 1]">
            Relative weights of l1 norm penalty vs l2 norm penalty to explore.
            An l1-ratio of 0 means l2 penalty only (euclidean norm), resulting in a ridge regression penalizing large
            coefficients proportional to their sum of squares. An l1-ratio of 1.0 means l1 penalty only (taxicab/manhattan norm),
            i.e. proportional to the sum of absolute coefficient values. This has the tendency to prefer solutions with
            fewer non-zero coefficients, effectively reducing the number of features used in the optimized model.

            <Accordion title="Array items">
              <ParamField path="Item" type="number">
                Each item in array.

                Values must be in the following range:

                ```javascript theme={null}
                0 ≤ Item ≤ 1
                ```
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="max_iter" type="integer" default="1000">
            Maximum number of iterations of the optimization algorithm.
            Try increasing this if you suspect the algorithm doesn't reach the peformance you'd expect.

            Values must be in the following range:

            ```javascript theme={null}
            100 ≤ max_iter < inf
            ```
          </ParamField>

          <ParamField path="scoring" type="string" default="accuracy">
            Each item in array.

            Values must be one of the following:

            `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
          </ParamField>

          <ParamField path="class_weight" type="[string, null]" default="balanced">
            Mode for selecting sample weights given its class.
            If not provided (or `null`), all weights will be 1, and so in effect no weights are applied.
            When `"balanced"` (default), sample weights are calculated as inversely proportional to class
            frequencies, such that samples from the more frequent classes have lower weights, and under-represented
            classes are given more weight.

            Values must be one of the following:

            * `balanced`
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="validate" type="[object, null]">
        Configure model validation.
        Allows evaluation of model performance via [cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html)
        using custom metrics. If not specified, will by default perform 5-fold cross-validation with automatically selected
        metrics.

        <Accordion title="Properties">
          <ParamField path="n_splits" type="[integer, null]" default="5">
            Number of train-test splits to evaluate the model on.
            Will split the dataset into training and test set `n_splits` times, train on the former
            and evaluate on the latter using specified or automatically selected `metrics`.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ n_splits < inf
            ```
          </ParamField>

          <ParamField path="test_size" type="[number, null]">
            What proportion of the data to use for testing in each split.
            If `null` or not provided, will use [k-fold cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html#k-fold)
            to split the dataset. E.g. if `n_splits` is 5, the dataset will be split into 5 equal-sized parts.
            For five iterations four parts will then be used for training and the remaining part for testing.
            If `test_size` is a number between 0 and 1, in contrast, validation is done using a
            [shuffle-split](https://scikit-learn.org/stable/modules/cross_validation.html#shufflesplit)
            approach. Here, instead of splitting the data into `n_splits` equal parts up front, in each iteration
            we randomize the data and sample a proportion equal to `test_size` to use for evaluation and the remaining
            rows for training.

            Values must be in the following range:

            ```javascript theme={null}
            0 < test_size < 1
            ```
          </ParamField>

          <ParamField path="time_split" type="boolean" default="false">
            Whether to split the data by time.
            Most recent data will be used for testing and previous data for training. Assumes data is passed
            already sorted ascending by time.
          </ParamField>

          <ParamField path="metrics" type="[array[string], null]">
            One or more metrics/scoring functions to evaluate the model with.
            When none is provided, will measure default metrics appropriate for the prediction task
            (classification vs. regression determined from model or type of target column). See
            [sklearn model evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html#common-cases-predefined-values)
            for further details.

            <Accordion title="Array items">
              <ParamField path="Item" type="string">
                Each item in array.

                Values must be one of the following:

                `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="seed" type="integer">
        Seed for random number generator ensuring reproducibility.

        Values must be in the following range:

        ```javascript theme={null}
        0 ≤ seed < inf
        ```
      </ParamField>

      <ParamField path="sort" type="object">
        Sort the data before training.
        If the data is not already sorted by time, you can sort it here. This is useful when you want to split the data
        by time, for example to train on older data and test on newer data (see the `time_split` parameter in validation
        configurations). If the data is already sorted by time, you can ignore this parameter.

        <Accordion title="Properties">
          <ParamField path="columns" type="[string, array[string]]">
            One or more column to sort by.

            <Accordion title="Array items">
              <ParamField path="Item" type="string (ds.column)">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ascending" type="[boolean, array[boolean]]" default="true">
            Sort order.
            Whether to sort in ascending or descending order. If the single value `true` is provided, or no value is specified,
            all columns will be sorted in ascending order. If a single `false` is provided, all columns will be sorted in descending
            order. If an array of booleans is provided, each column will be sorted according to the corresponding boolean value.

            <Accordion title="Array items">
              <ParamField path="Item" type="boolean">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>
    </Tab>

    <Tab title="DecisionTreeClassifier">
      <ParamField path="model" type="string" default="DecisionTreeClassifier">
        Trains a decision tree classifier.
        A [decision tree](https://en.wikipedia.org/wiki/Decision_tree_learning) is a non-parametric,
        supervised method for predicting a target variable by learning simple decision rules inferred
        from the data. It can be seen as a piecewise constant approximation, applying simple if-else decision
        rules to the data. The particular model used here is scikit-learn's
        [DecisionTreeClassifier](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html).
      </ParamField>

      <ParamField path="target" type="string (ds.column:category|boolean)" required>
        Target variable (labels).
        Name of the column that contains your target values (labels).
      </ParamField>

      <ParamField path="positive_class" type="[string, null]">
        Name of the positive class.
        In *binary* classification, usually the class you're most interested in, for example the label/class
        corresponding to successful lead conversion in a lead score model, the class corresponding to a
        customer who has churned in a churn prediction model, etc.

        If provided, will automaticall measure the performance (accuracy, precision, recall) of the model on this
        class, in addition to averages across all classes. If not provided, only summary metrics will be reported.
      </ParamField>

      <ParamField path="max_classes" type="integer" default="10">
        Maximum number of classes in the target variable.
        If there are more classes than this, the least frequent classes will be grouped together into a single class
        called "others". Reducing the number of classes in the target variable can help improve model performance,
        especially when the number of classes is very large, some classes are very rare, or the dataset doesn't have
        sufficient samples for all classes. Raising this significantly might lead to much longer training times.

        Values must be in the following range:

        ```javascript theme={null}
        2 ≤ max_classes ≤ 100
        ```
      </ParamField>

      <ParamField path="feature_importance" type="[string, boolean, null]" default="native">
        Importance of each feature in the model.
        Whether and how to measure each feature's contribution to the model's predictions. The higher the value,
        the more important the feature was in the model. Only relative values are meaningful, i.e. the importance
        of a feature relative to other features in the model.

        Also note that feature importance is usually meaningful only for models that fit the data well.

        The default (`null`, `true` or `"native"`) uses the classifier's native feature importance measure, e.g.
        [prediction-value-change](https://catboost.ai/en/docs/concepts/fstr#regular-feature-importance) in the case
        of Catboost, [Gini importance](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.feature_importances_)
        in the case of scikit-learn's DecisionTreeClassifier, and the mean of absolute coefficients in the case of
        logistic regression.

        When set to `"permutation"`, uses [permutation importance](https://scikit-learn.org/stable/modules/permutation_importance.html),
        i.e. measures the decrease in model score when a single feature's values are randomly shuffled. This is
        considerably slower than native feature importance (the model needs to be evaluated an additional k\*n times,
        where k is the number of features and n the number of repetitions to average over). On the positive side it is
        model-agnostic and doesn't suffer from bias towards high cardinality features (like some tree-based feature
        importances). On the negative side, it can be sensitive to strongly correlated features, as the unshuffled
        correlated variable is still available to the model when shuffling the original variable.

        When set to `false`, no feature importance will be calculated.

        Values must be one of the following:

        * `True`
        * `False`
        * `native`
        * `permutation`
        * `null`
      </ParamField>

      <ParamField path="encode_features" type="boolean" default="true">
        Toggle encoding of feature columns.
        When enabled, Graphext will auto-convert any column types to the numeric type before
        fitting the model. How this conversion is done can be configured using the `feature_encoder`
        option below.

        <Warning>If disabled, any model trained in this step will assume that input data
        is already in an appropriate format (e.g. numerical and not containing any missing values).</Warning>
      </ParamField>

      <ParamField path="feature_encoder" type="[null, object]">
        Configures encoding of feature columns.
        By default (`null`), Graphext chooses automatically how to convert any column types the model
        may not understand natively to a numeric type.

        A configuration object can be passed instead to overwrite specific parameter values with respect
        to their default values.

        <Accordion title="Properties">
          <ParamField path="number" type="object">
            Numeric encoder.
            Configures encoding of numeric features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="scaler_params" type="object">
                Further parameters passed to the `scaler` function.
                Details depend no the particular scaler used.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="bool" type="object">
            Boolean encoder.
            Configures encoding of boolean features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ordinal" type="object">
            Ordinal encoder.
            Configures encoding of categorical features that have a natural order.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="category" type="[object, object]">
            Category encoder.
            May contain either a single configuration for all categorical variables, or two different configurations
            for low- and high-cardinality variables. For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple category encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="imputer" type="[null, string]">
                    Whether and how to impute (replace/fill) missing values.

                    Values must be one of the following:

                    * `MostFrequent`
                    * `Const`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of unique categories to encode.
                    Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                    "Others" category.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories.

                    Values must be one of the following:

                    `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    Whether and how to scale the final numerical values (across a single column).

                    Values must be one of the following:

                    * `Standard`
                    * `Robust`
                    * `KNN`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional category encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for categories with fewer than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="multilabel" type="[object, object]">
            Multilabel encoder.
            Configures encoding of multivalued categorical features (variable length lists of categories,
            or the semantic type `list[category]` for short). May contain either a single configuration for
            all multilabel variables, or two different configurations for low- and high-cardinality variables.
            For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple multilabel encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories/labels in multilabel (list\[category]) columns.

                    Values must be one of the following:

                    * `Binarizer`
                    * `TfIdf`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of categories/labels to encode.
                    If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                    using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                    When applied together with (after a) Tf-Idf encoding, this performs a kind of
                    [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    How to scale the encoded (numerical columns).

                    Values must be one of the following:

                    * `Euclidean`
                    * `KNN`
                    * `Norm`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional multilabel encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for mulitabel columns with fewer than `cardinality_threshold` unique categories/labels.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="datetime" type="object">
            Datetime encoder.
            Configures encoding of datetime (timestamp) features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="components" type="array[string]">
                A list of numerical components to extract.
                Will create one numeric column for each component.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    `day` `dayofweek` `dayofyear` `hour` `minute` `month` `quarter` `season` `second` `week` `weekday` `weekofyear` `year`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="cycles" type="array[string]">
                A list of cyclical time features to extract.
                "Cycles" are numerical transformations of features that should be represented on a circle. E.g. months,
                ranging from 1 to 12, should be arranged such that 12 and 1 are next to each other, rather than on
                opposite ends of a linear scale. We represent such cyclical time features on a circle by creating two
                columns for each original feature: the sin and cos of the numerical feature after appropriate scaling.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    * `day`
                    * `dayofweek`
                    * `dayofyear`
                    * `hour`
                    * `month`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="epoch" type="[null, boolean]">
                Whether to include the epoch as new feature (seconds since 01/01/1970).
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="component_scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="vector_scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="embedding" type="object">
            Embedding/vector encoder.
            Configures encoding of multivalued numerical features (variable length lists of numbers, i.e. vectors, or the semantic type `list[number]` for short).

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="text" type="object">
            Text encoder.
            Configures encoding of text (natural language) features. Currently only allows
            [Tf-Idf](https://en.wikipedia.org/wiki/Tf%E2%80%93idf) embeddings to represent texts. If you wish
            to use other embeddings, e.g. semantic, Word2Vec etc., transform your text column first using
            another step, and then use that result instead of the original texts.

            <Warning>Texts are *excluded* by default from the overall encoding of the dataset. See parameter
            `include_text_features` below to active it.</Warning>

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="encoder_params" type="object">
                Parameters to be passed to the text encoder (Tf-Idf parameters only for now).
                See [scikit-learn's documentation](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html)
                for detailed parameters and their explanation.
              </ParamField>

              <ParamField path="n_components" type="integer">
                How many output features to generate.
                The resulting Tf-Idf vectors will be reduced to these many dimensions (columns) using scikit-learn's
                [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                This performs a kind of [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).
                By default we will reduce to 200 components.

                Values must be in the following range:

                ```javascript theme={null}
                2 ≤ n_components ≤ 1024
                ```
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="include_text_features" type="boolean" default="false">
        Whether to include or ignore text columns during the processing of input data.
        Enabling this will convert texts to their TfIdf representation. Each text will be
        converted to an N-dimensional vector in which each component measures the relative
        "over-representation" of a specific word (or n-gram) relative to its overall
        frequency in the whole dataset. This is disabled by default because it will
        often be better to convert texts explicitly using a previous step, such as
        `embed_text` or `embed_text_with_model`.
      </ParamField>

      <ParamField path="params" type="object">
        Decision tree configuration parameters.
        These parameters are specific to the decision tree algorithm. They are used to define the tree structure
        and the stopping criteria. The default values are the ones used by scikit-learn.

        For more information, see the [scikit-learn documentation](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier).

        <Accordion title="Properties">
          <ParamField path="criterion" type="string" default="gini">
            Function to measure the quality of a split.
            Supported criteria are "gini" for the Gini impurity and "entropy" for the information gain.

            Values must be one of the following:

            * `gini`
            * `entropy`
          </ParamField>

          <ParamField path="splitter" type="string" default="best">
            Strategy used to choose the split at each node.
            Supported strategies are "best" to choose the best split and "random" to choose the best random split.

            Values must be one of the following:

            * `best`
            * `random`
          </ParamField>

          <ParamField path="max_depth" type="[integer, null]" default="10">
            Maximum depth of the tree.
            The maximum depth of the tree. If null, then nodes are expanded until all leaves are pure
            or until all leaves contain less than min\_samples\_split samples.

            Values must be in the following range:

            ```javascript theme={null}
            1 < max_depth < inf
            ```
          </ParamField>

          <ParamField path="min_samples_split" type="number" default="2">
            Minimum number of samples required to split an internal node.
            The minimum number of samples required to split an internal node. If int, then consider min\_samples\_split
            as the minimum *count*. If float, then min\_samples\_split is a *fraction* and `ceil(min_samples_split * n_samples)`
            are the minimum number of samples for each split.
          </ParamField>

          <ParamField path="min_samples_leaf" type="number" default="1">
            Minimum number of samples required to be at a leaf node.
            The minimum number of samples required to be at a leaf node. A split point at any depth will only be
            considered if it leaves at least `min_samples_leaf` training samples in each of the left and right branches.
            This may have the effect of smoothing the model, especially in regression.

            If int, then consider `min_samples_leaf` as the minimum *count*. If float, then `min_samples_leaf` is
            a *fraction* and `ceil(min_samples_leaf * n_samples)` are the minimum number of samples for each node.
          </ParamField>

          <ParamField path="max_leaf_nodes" type="[integer, null]">
            Grow a tree with `max_leaf_nodes` in best-first fashion.
            Best nodes are defined as relative reduction in impurity. If null then unlimited number of leaf nodes.
          </ParamField>

          <ParamField path="max_features" type="[number, string, null]">
            Number of features to consider when looking for the best split.
            The number of features to consider when looking for the best split:

            * If int, then consider `max_features` features at each split.
            * If float, then `max_features` is a *fraction* and `int(max_features * n_features)` features are considered at each split.
            * If "auto", then `max_features=sqrt(n_features)`.
            * If "sqrt", then `max_features=sqrt(n_features)`.
            * If "log2", then `max_features=log2(n_features)`.
            * If null, then `max_features=n_features`.

            Note: the search for a split does not stop until at least one valid partition of the node samples is found,
            even if it requires to effectively inspect more than `max_features` features.
          </ParamField>

          <ParamField path="ccp_alpha" type="number" default="0.0">
            Complexity parameter used for Minimal Cost-Complexity Pruning.
            Minimal Cost-Complexity Pruning recursively finds the node with the "weakest link". The weakest link is
            characterized by an effective alpha, where the nodes with the smallest effective alpha are pruned first.
            As alpha increases, more of the tree is pruned, which increases the total impurity of its leaves.

            Values must be in the following range:

            ```javascript theme={null}
            0.0 ≤ ccp_alpha < inf
            ```
          </ParamField>

          <ParamField path="random_state" type="[integer, null]">
            Controls the randomness of the estimator.
            The features are always randomly permuted at each split, even if splitter is set to "best". When
            max\_features \< n\_features, the algorithm will select max\_features at random at each split before
            finding the best split among them. But the best found split may vary across different runs, even if
            max\_features=n\_features. That is the case, if the improvement of the criterion is identical for several
            splits and one split has to be selected at random. To obtain a deterministic behaviour during fitting,
            random\_state has to be fixed to an integer.
          </ParamField>

          <ParamField path="class_weight" type="[string, null]" default="balanced">
            How to weigh each class of the target variable.
            If `null`, all classes will have a weight of one. The "balanced" mode uses the values of the target y to
            automatically adjust weights inversely proportional to class frequencies in the input data
            as `n_samples / (n_classes * np.bincount(y))`.

            Values must be one of the following:

            * `balanced`
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="validate" type="[object, null]">
        Configure model validation.
        Allows evaluation of model performance via [cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html)
        using custom metrics. If not specified, will by default perform 5-fold cross-validation with automatically selected
        metrics.

        <Accordion title="Properties">
          <ParamField path="n_splits" type="[integer, null]" default="5">
            Number of train-test splits to evaluate the model on.
            Will split the dataset into training and test set `n_splits` times, train on the former
            and evaluate on the latter using specified or automatically selected `metrics`.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ n_splits < inf
            ```
          </ParamField>

          <ParamField path="test_size" type="[number, null]">
            What proportion of the data to use for testing in each split.
            If `null` or not provided, will use [k-fold cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html#k-fold)
            to split the dataset. E.g. if `n_splits` is 5, the dataset will be split into 5 equal-sized parts.
            For five iterations four parts will then be used for training and the remaining part for testing.
            If `test_size` is a number between 0 and 1, in contrast, validation is done using a
            [shuffle-split](https://scikit-learn.org/stable/modules/cross_validation.html#shufflesplit)
            approach. Here, instead of splitting the data into `n_splits` equal parts up front, in each iteration
            we randomize the data and sample a proportion equal to `test_size` to use for evaluation and the remaining
            rows for training.

            Values must be in the following range:

            ```javascript theme={null}
            0 < test_size < 1
            ```
          </ParamField>

          <ParamField path="time_split" type="boolean" default="false">
            Whether to split the data by time.
            Most recent data will be used for testing and previous data for training. Assumes data is passed
            already sorted ascending by time.
          </ParamField>

          <ParamField path="metrics" type="[array[string], null]">
            One or more metrics/scoring functions to evaluate the model with.
            When none is provided, will measure default metrics appropriate for the prediction task
            (classification vs. regression determined from model or type of target column). See
            [sklearn model evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html#common-cases-predefined-values)
            for further details.

            <Accordion title="Array items">
              <ParamField path="Item" type="string">
                Each item in array.

                Values must be one of the following:

                `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="tune" type="object">
        Configure hypertuning.
        Configures the optimization of model hyper-parameters via cross-validated grid- or randomized search.

        <Accordion title="Properties">
          <ParamField path="strategy" type="string" default="grid">
            Which search strategy to use for optimization.
            Grid search explores all possible combinations of parameters specified in `params`.
            Randomized search, on the other hand, randomly samples `iterations` parameter combinations
            from the distributions specified in `params`.

            Values must be one of the following:

            * `grid`
            * `random`
          </ParamField>

          <ParamField path="iterations" type="integer" default="10">
            How many randomly sampled parameter combinations to test in randomized search.

            Values must be in the following range:

            ```javascript theme={null}
            1 < iterations < inf
            ```
          </ParamField>

          <ParamField path="validate" type="[object, null]">
            Configure model validation.
            Allows evaluation of model performance via [cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html)
            using custom metrics. If not specified, will by default perform 5-fold cross-validation with automatically selected
            metrics.

            <Accordion title="Properties">
              <ParamField path="n_splits" type="[integer, null]" default="5">
                Number of train-test splits to evaluate the model on.
                Will split the dataset into training and test set `n_splits` times, train on the former
                and evaluate on the latter using specified or automatically selected `metrics`.

                Values must be in the following range:

                ```javascript theme={null}
                1 ≤ n_splits < inf
                ```
              </ParamField>

              <ParamField path="test_size" type="[number, null]">
                What proportion of the data to use for testing in each split.
                If `null` or not provided, will use [k-fold cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html#k-fold)
                to split the dataset. E.g. if `n_splits` is 5, the dataset will be split into 5 equal-sized parts.
                For five iterations four parts will then be used for training and the remaining part for testing.
                If `test_size` is a number between 0 and 1, in contrast, validation is done using a
                [shuffle-split](https://scikit-learn.org/stable/modules/cross_validation.html#shufflesplit)
                approach. Here, instead of splitting the data into `n_splits` equal parts up front, in each iteration
                we randomize the data and sample a proportion equal to `test_size` to use for evaluation and the remaining
                rows for training.

                Values must be in the following range:

                ```javascript theme={null}
                0 < test_size < 1
                ```
              </ParamField>

              <ParamField path="time_split" type="boolean" default="false">
                Whether to split the data by time.
                Most recent data will be used for testing and previous data for training. Assumes data is passed
                already sorted ascending by time.
              </ParamField>

              <ParamField path="metrics" type="[array[string], null]">
                One or more metrics/scoring functions to evaluate the model with.
                When none is provided, will measure default metrics appropriate for the prediction task
                (classification vs. regression determined from model or type of target column). See
                [sklearn model evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html#common-cases-predefined-values)
                for further details.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
                  </ParamField>
                </Accordion>
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="scorer" type="string">
            Each item in array.

            Values must be one of the following:

            `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
          </ParamField>

          <ParamField path="params" type="object">
            The parameter values to explore.
            Allows tuning of any and all of the parameters that can be set also as constants in the
            "params" attribute.

            Keys in this object should be strings identifying parameter names, and values should be
            *lists* of values to explore for that parameter. E.g. `"depth": [3, 5, 7]`.

            <Accordion title="Properties">
              <ParamField path="depth" type="array[integer]">
                List of depths values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="6">
                    The maximum depth of the tree.

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ Item ≤ 16
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="iterations" type="array[['integer', 'null']]">
                List of iterations values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[integer, null]" default="1000">
                    Number of iterations.
                    The maximum number of trees that can be built when solving machine learning problems. When using other parameters that limit the number of iterations, the final number of trees may be less than the number specified in this parameter.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="one_hot_max_size" type="array[integer]">
                List of values configuring max cardinality for one-hot encoding.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="10">
                    Maximum cardinality of variables to be one-hot encoded.
                    Use one-hot encoding for all categorical features with a number of different values less than or equal to this value. Other variables will be target-encoded. Note that one-hot encoding is faster than the alternatives, so decreasing this value makes it more likely slower methods will be used. See [CatBoost details](https://catboost.ai/docs/concepts/algorithm-main-stages_cat-to-numberic.html) for further information.

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_ctr_complexity" type="array[number]">
                List of values configuring variable combination complexity.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="2">
                    The maximum number of features that can be combined when transforming categorical variables.
                    Each resulting combination consists of one or more categorical features and can optionally contain binary features in the following form: “numeric feature > value”.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item ≤ 4
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="l2_leaf_reg" type="array[number]">
                List of leaf regularization strengths.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="3.0">
                    Coefficient at the L2 regularization term of the cost function.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0.0 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="border_count" type="array[integer]">
                List of border counts.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="254">
                    The number of splits for numerical features.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item ≤ 65535
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="random_strength" type="array[number]">
                List of random strengths.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="1.0">
                    The amount of randomness to use for scoring splits.
                    Use this parameter to avoid overfitting the model. The value multiplies the variance of a random variable (with
                    zero mean) that is added to the score used to select splits when a tree is grown.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="criterion" type="array[string]">
                List of criterion values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string" default="gini">
                    Function to measure the quality of a split.
                    Supported criteria are "gini" for the Gini impurity and "entropy" for the information gain.

                    Values must be one of the following:

                    * `gini`
                    * `entropy`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="splitter" type="array[string]">
                List of splitter values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string" default="best">
                    Strategy used to choose the split at each node.
                    Supported strategies are "best" to choose the best split and "random" to choose the best random split.

                    Values must be one of the following:

                    * `best`
                    * `random`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_depth" type="array[['integer', 'null']]">
                List of max\_depth values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[integer, null]" default="10">
                    Maximum depth of the tree.
                    The maximum depth of the tree. If null, then nodes are expanded until all leaves are pure
                    or until all leaves contain less than min\_samples\_split samples.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="min_samples_split" type="array[number]">
                List of min\_samples\_split values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="2">
                    Minimum number of samples required to split an internal node.
                    The minimum number of samples required to split an internal node. If int, then consider min\_samples\_split
                    as the minimum *count*. If float, then min\_samples\_split is a *fraction* and `ceil(min_samples_split * n_samples)`
                    are the minimum number of samples for each split.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="min_samples_leaf" type="array[number]">
                List of min\_samples\_leaf values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="1">
                    Minimum number of samples required to be at a leaf node.
                    The minimum number of samples required to be at a leaf node. A split point at any depth will only be
                    considered if it leaves at least `min_samples_leaf` training samples in each of the left and right branches.
                    This may have the effect of smoothing the model, especially in regression.

                    If int, then consider `min_samples_leaf` as the minimum *count*. If float, then `min_samples_leaf` is
                    a *fraction* and `ceil(min_samples_leaf * n_samples)` are the minimum number of samples for each node.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_leaf_nodes" type="array[['integer', 'null']]">
                List of max\_leaf\_nodes values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[integer, null]">
                    Grow a tree with `max_leaf_nodes` in best-first fashion.
                    Best nodes are defined as relative reduction in impurity. If null then unlimited number of leaf nodes.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_features" type="array[['number', 'string', 'null']]">
                List of max\_features values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[number, string, null]">
                    Number of features to consider when looking for the best split.
                    The number of features to consider when looking for the best split:

                    * If int, then consider `max_features` features at each split.
                    * If float, then `max_features` is a *fraction* and `int(max_features * n_features)` features are considered at each split.
                    * If "auto", then `max_features=sqrt(n_features)`.
                    * If "sqrt", then `max_features=sqrt(n_features)`.
                    * If "log2", then `max_features=log2(n_features)`.
                    * If null, then `max_features=n_features`.

                    Note: the search for a split does not stop until at least one valid partition of the node samples is found,
                    even if it requires to effectively inspect more than `max_features` features.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="ccp_alpha" type="array[number]">
                List of ccp\_alpha values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="0.0">
                    Complexity parameter used for Minimal Cost-Complexity Pruning.
                    Minimal Cost-Complexity Pruning recursively finds the node with the "weakest link". The weakest link is
                    characterized by an effective alpha, where the nodes with the smallest effective alpha are pruned first.
                    As alpha increases, more of the tree is pruned, which increases the total impurity of its leaves.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0.0 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="seed" type="integer">
        Seed for random number generator ensuring reproducibility.

        Values must be in the following range:

        ```javascript theme={null}
        0 ≤ seed < inf
        ```
      </ParamField>

      <ParamField path="sort" type="object">
        Sort the data before training.
        If the data is not already sorted by time, you can sort it here. This is useful when you want to split the data
        by time, for example to train on older data and test on newer data (see the `time_split` parameter in validation
        configurations). If the data is already sorted by time, you can ignore this parameter.

        <Accordion title="Properties">
          <ParamField path="columns" type="[string, array[string]]">
            One or more column to sort by.

            <Accordion title="Array items">
              <ParamField path="Item" type="string (ds.column)">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ascending" type="[boolean, array[boolean]]" default="true">
            Sort order.
            Whether to sort in ascending or descending order. If the single value `true` is provided, or no value is specified,
            all columns will be sorted in ascending order. If a single `false` is provided, all columns will be sorted in descending
            order. If an array of booleans is provided, each column will be sorted according to the corresponding boolean value.

            <Accordion title="Array items">
              <ParamField path="Item" type="boolean">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>
    </Tab>

    <Tab title="RandomForestClassifier">
      <ParamField path="model" type="string" default="RandomForestClassifier">
        Train a [RandomForest Classifier](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html).
        Ensemble method using multiple decision trees for improved accuracy and over-fitting control.
        A versatile ensemble learning method that constructs multiple decision trees during training and outputs the mode of the classes (classification)
        or mean prediction (regression) of the individual trees to improve predictive accuracy and control over-fitting.
        It operates by building a multitude of decision trees at training time and outputting the class that is the mode of the classes (classification)
        or mean prediction (regression) of the individual trees. RandomForestClassifier is an ensemble of decision trees.
        For classification tasks, the output of the RandomForestClassifier is the class selected by most trees.
        It works by randomly selecting subsets of the training data, fitting a decision tree to each, and aggregating the predictions.
        This process helps in reducing variance and avoids overfitting.
      </ParamField>

      <ParamField path="target" type="string (ds.column:category|boolean)" required>
        Target variable (labels).
        Name of the column that contains your target values (labels).
      </ParamField>

      <ParamField path="positive_class" type="[string, null]">
        Name of the positive class.
        In *binary* classification, usually the class you're most interested in, for example the label/class
        corresponding to successful lead conversion in a lead score model, the class corresponding to a
        customer who has churned in a churn prediction model, etc.

        If provided, will automaticall measure the performance (accuracy, precision, recall) of the model on this
        class, in addition to averages across all classes. If not provided, only summary metrics will be reported.
      </ParamField>

      <ParamField path="max_classes" type="integer" default="10">
        Maximum number of classes in the target variable.
        If there are more classes than this, the least frequent classes will be grouped together into a single class
        called "others". Reducing the number of classes in the target variable can help improve model performance,
        especially when the number of classes is very large, some classes are very rare, or the dataset doesn't have
        sufficient samples for all classes. Raising this significantly might lead to much longer training times.

        Values must be in the following range:

        ```javascript theme={null}
        2 ≤ max_classes ≤ 100
        ```
      </ParamField>

      <ParamField path="feature_importance" type="[string, boolean, null]" default="native">
        Importance of each feature in the model.
        Whether and how to measure each feature's contribution to the model's predictions. The higher the value,
        the more important the feature was in the model. Only relative values are meaningful, i.e. the importance
        of a feature relative to other features in the model.

        Also note that feature importance is usually meaningful only for models that fit the data well.

        The default (`null`, `true` or `"native"`) uses the classifier's native feature importance measure, e.g.
        [prediction-value-change](https://catboost.ai/en/docs/concepts/fstr#regular-feature-importance) in the case
        of Catboost, [Gini importance](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.feature_importances_)
        in the case of scikit-learn's DecisionTreeClassifier, and the mean of absolute coefficients in the case of
        logistic regression.

        When set to `"permutation"`, uses [permutation importance](https://scikit-learn.org/stable/modules/permutation_importance.html),
        i.e. measures the decrease in model score when a single feature's values are randomly shuffled. This is
        considerably slower than native feature importance (the model needs to be evaluated an additional k\*n times,
        where k is the number of features and n the number of repetitions to average over). On the positive side it is
        model-agnostic and doesn't suffer from bias towards high cardinality features (like some tree-based feature
        importances). On the negative side, it can be sensitive to strongly correlated features, as the unshuffled
        correlated variable is still available to the model when shuffling the original variable.

        When set to `false`, no feature importance will be calculated.

        Values must be one of the following:

        * `True`
        * `False`
        * `native`
        * `permutation`
        * `null`
      </ParamField>

      <ParamField path="encode_features" type="boolean" default="true">
        Toggle encoding of feature columns.
        When enabled, Graphext will auto-convert any column types to the numeric type before
        fitting the model. How this conversion is done can be configured using the `feature_encoder`
        option below.

        <Warning>If disabled, any model trained in this step will assume that input data
        is already in an appropriate format (e.g. numerical and not containing any missing values).</Warning>
      </ParamField>

      <ParamField path="feature_encoder" type="[null, object]">
        Configures encoding of feature columns.
        By default (`null`), Graphext chooses automatically how to convert any column types the model
        may not understand natively to a numeric type.

        A configuration object can be passed instead to overwrite specific parameter values with respect
        to their default values.

        <Accordion title="Properties">
          <ParamField path="number" type="object">
            Numeric encoder.
            Configures encoding of numeric features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="scaler_params" type="object">
                Further parameters passed to the `scaler` function.
                Details depend no the particular scaler used.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="bool" type="object">
            Boolean encoder.
            Configures encoding of boolean features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ordinal" type="object">
            Ordinal encoder.
            Configures encoding of categorical features that have a natural order.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="category" type="[object, object]">
            Category encoder.
            May contain either a single configuration for all categorical variables, or two different configurations
            for low- and high-cardinality variables. For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple category encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="imputer" type="[null, string]">
                    Whether and how to impute (replace/fill) missing values.

                    Values must be one of the following:

                    * `MostFrequent`
                    * `Const`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of unique categories to encode.
                    Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                    "Others" category.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories.

                    Values must be one of the following:

                    `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    Whether and how to scale the final numerical values (across a single column).

                    Values must be one of the following:

                    * `Standard`
                    * `Robust`
                    * `KNN`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional category encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for categories with fewer than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="multilabel" type="[object, object]">
            Multilabel encoder.
            Configures encoding of multivalued categorical features (variable length lists of categories,
            or the semantic type `list[category]` for short). May contain either a single configuration for
            all multilabel variables, or two different configurations for low- and high-cardinality variables.
            For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple multilabel encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories/labels in multilabel (list\[category]) columns.

                    Values must be one of the following:

                    * `Binarizer`
                    * `TfIdf`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of categories/labels to encode.
                    If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                    using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                    When applied together with (after a) Tf-Idf encoding, this performs a kind of
                    [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    How to scale the encoded (numerical columns).

                    Values must be one of the following:

                    * `Euclidean`
                    * `KNN`
                    * `Norm`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional multilabel encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for mulitabel columns with fewer than `cardinality_threshold` unique categories/labels.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="datetime" type="object">
            Datetime encoder.
            Configures encoding of datetime (timestamp) features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="components" type="array[string]">
                A list of numerical components to extract.
                Will create one numeric column for each component.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    `day` `dayofweek` `dayofyear` `hour` `minute` `month` `quarter` `season` `second` `week` `weekday` `weekofyear` `year`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="cycles" type="array[string]">
                A list of cyclical time features to extract.
                "Cycles" are numerical transformations of features that should be represented on a circle. E.g. months,
                ranging from 1 to 12, should be arranged such that 12 and 1 are next to each other, rather than on
                opposite ends of a linear scale. We represent such cyclical time features on a circle by creating two
                columns for each original feature: the sin and cos of the numerical feature after appropriate scaling.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    * `day`
                    * `dayofweek`
                    * `dayofyear`
                    * `hour`
                    * `month`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="epoch" type="[null, boolean]">
                Whether to include the epoch as new feature (seconds since 01/01/1970).
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="component_scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="vector_scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="embedding" type="object">
            Embedding/vector encoder.
            Configures encoding of multivalued numerical features (variable length lists of numbers, i.e. vectors, or the semantic type `list[number]` for short).

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="text" type="object">
            Text encoder.
            Configures encoding of text (natural language) features. Currently only allows
            [Tf-Idf](https://en.wikipedia.org/wiki/Tf%E2%80%93idf) embeddings to represent texts. If you wish
            to use other embeddings, e.g. semantic, Word2Vec etc., transform your text column first using
            another step, and then use that result instead of the original texts.

            <Warning>Texts are *excluded* by default from the overall encoding of the dataset. See parameter
            `include_text_features` below to active it.</Warning>

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="encoder_params" type="object">
                Parameters to be passed to the text encoder (Tf-Idf parameters only for now).
                See [scikit-learn's documentation](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html)
                for detailed parameters and their explanation.
              </ParamField>

              <ParamField path="n_components" type="integer">
                How many output features to generate.
                The resulting Tf-Idf vectors will be reduced to these many dimensions (columns) using scikit-learn's
                [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                This performs a kind of [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).
                By default we will reduce to 200 components.

                Values must be in the following range:

                ```javascript theme={null}
                2 ≤ n_components ≤ 1024
                ```
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="include_text_features" type="boolean" default="false">
        Whether to include or ignore text columns during the processing of input data.
        Enabling this will convert texts to their TfIdf representation. Each text will be
        converted to an N-dimensional vector in which each component measures the relative
        "over-representation" of a specific word (or n-gram) relative to its overall
        frequency in the whole dataset. This is disabled by default because it will
        often be better to convert texts explicitly using a previous step, such as
        `embed_text` or `embed_text_with_model`.
      </ParamField>

      <ParamField path="params" type="object">
        RandomForest configuration parameters.
        You can check the official documentation for more details about RandomForest's parameters [here](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html).

        <Accordion title="Properties">
          <ParamField path="n_estimators" type="integer" default="100">
            The number of trees in the forest.
            The number of trees in the forest. A larger number of trees increases the performance but also the computational cost.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ n_estimators < inf
            ```
          </ParamField>

          <ParamField path="criterion" type="string" default="gini">
            The function to measure the quality of a split.
            The function to measure the quality of a split. Supported criteria are "gini" for the Gini impurity and "entropy" for the information gain.

            Values must be one of the following:

            * `gini`
            * `entropy`
          </ParamField>

          <ParamField path="max_depth" type="[integer, null]">
            The maximum depth of the tree.
            The maximum depth of the tree. If `null`, then nodes are expanded until all leaves are pure or until all leaves contain less than min\_samples\_split samples.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ max_depth < inf
            ```
          </ParamField>

          <ParamField path="class_weight" type="[string, null]" default="balanced">
            How to weigh each class of the target variable.
            If `null`, all classes will have a weight of one. The "balanced" mode uses the values of the target y to
            automatically adjust weights inversely proportional to class frequencies in the input data
            as `n_samples / (n_classes * np.bincount(y))`.

            The “balanced\_subsample” mode is the same as “balanced” except that weights are computed based on the bootstrap
            sample for every tree grown.

            Values must be one of the following:

            * `balanced`
            * `balanced_subsample`
            * `None`
          </ParamField>

          <ParamField path="min_samples_split" type="integer" default="2">
            The minimum number of samples required to split an internal node.
            The minimum number of samples required to split an internal node. A split point at any depth will only be considered if it leaves at least `min_samples_split` training samples in each of the left and right branches.

            Values must be in the following range:

            ```javascript theme={null}
            2 ≤ min_samples_split < inf
            ```
          </ParamField>

          <ParamField path="min_samples_leaf" type="integer" default="1">
            The minimum number of samples required to be at a leaf node.
            A split point at any depth will only be considered if it leaves at least `min_samples_leaf` training samples in each of the left and right branches. This may have the effect of smoothing the model.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ min_samples_leaf < inf
            ```
          </ParamField>

          <ParamField path="min_weight_fraction_leaf" type="number" default="0.0">
            The minimum weighted fraction of the sum total of weights required to be at a leaf node.
            The minimum weighted fraction of the sum total of weights (of all the input samples) required to be at a leaf node. Samples have equal weight when sample\_weight is not provided.

            Values must be in the following range:

            ```javascript theme={null}
            0.0 ≤ min_weight_fraction_leaf ≤ 0.5
            ```
          </ParamField>

          <ParamField path="max_features" type="[string, integer, null]">
            The number of features to consider when looking for the best split.
            The number of features to consider when looking for the best split. If “auto”, then `max_features=sqrt(n_features)`. If `null`, then `max_features=n_features`.
          </ParamField>

          <ParamField path="max_leaf_nodes" type="[integer, null]">
            Grow trees with max\_leaf\_nodes in best-first fashion.
            Grow trees with `max_leaf_nodes` in best-first fashion. Best nodes are defined as relative reduction in impurity. If `null` then unlimited number of leaf nodes.
          </ParamField>

          <ParamField path="min_impurity_decrease" type="number" default="0.0">
            A node will be split if this split induces a decrease of the impurity greater than or equal to this value.
            A node will be split if this split induces a decrease of the impurity greater than or equal to this value. This may have the effect of smoothing the model, especially in regression.

            Values must be in the following range:

            ```javascript theme={null}
            0.0 ≤ min_impurity_decrease < inf
            ```
          </ParamField>

          <ParamField path="bootstrap" type="boolean" default="true">
            Whether bootstrap samples are used when building trees.
            If `true`, bootstrap samples are used when building trees. If `false`, the whole dataset is used to build each tree.
          </ParamField>

          <ParamField path="random_state" type="[integer, null]">
            Controls both the randomness of the bootstrapping of the samples used when building trees and the sampling of the features to consider when looking for the best split at each node.
          </ParamField>

          <ParamField path="max_samples" type="[integer, null]">
            If bootstrap is True, the number of samples to draw from X to train each base estimator.
            If bootstrap is True, the number of samples to draw from X to train each base estimator. If `null` (default), then draw `X.shape[0]` samples.
          </ParamField>

          <ParamField path="ccp_alpha" type="number" default="0.0">
            Complexity parameter used for Minimal Cost-Complexity Pruning.
            Complexity parameter used for Minimal Cost-Complexity Pruning. The subtree with the largest cost complexity that is smaller than `ccp_alpha` will be chosen. By default, no pruning is performed.

            Values must be in the following range:

            ```javascript theme={null}
            0.0 ≤ ccp_alpha < inf
            ```
          </ParamField>

          <ParamField path="n_jobs" type="integer" default="-1">
            The number of jobs to run in parallel for both `fit` and `predict`.
            The number of jobs to run in parallel for both `fit` and `predict`. `-1` means using all processors.
          </ParamField>

          <ParamField path="verbose" type="integer" default="0">
            Controls the verbosity when fitting and predicting.
            Controls the verbosity when fitting and predicting.

            Values must be in the following range:

            ```javascript theme={null}
            0 ≤ verbose < inf
            ```
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="validate" type="[object, null]">
        Configure model validation.
        Allows evaluation of model performance via [cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html)
        using custom metrics. If not specified, will by default perform 5-fold cross-validation with automatically selected
        metrics.

        <Accordion title="Properties">
          <ParamField path="n_splits" type="[integer, null]" default="5">
            Number of train-test splits to evaluate the model on.
            Will split the dataset into training and test set `n_splits` times, train on the former
            and evaluate on the latter using specified or automatically selected `metrics`.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ n_splits < inf
            ```
          </ParamField>

          <ParamField path="test_size" type="[number, null]">
            What proportion of the data to use for testing in each split.
            If `null` or not provided, will use [k-fold cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html#k-fold)
            to split the dataset. E.g. if `n_splits` is 5, the dataset will be split into 5 equal-sized parts.
            For five iterations four parts will then be used for training and the remaining part for testing.
            If `test_size` is a number between 0 and 1, in contrast, validation is done using a
            [shuffle-split](https://scikit-learn.org/stable/modules/cross_validation.html#shufflesplit)
            approach. Here, instead of splitting the data into `n_splits` equal parts up front, in each iteration
            we randomize the data and sample a proportion equal to `test_size` to use for evaluation and the remaining
            rows for training.

            Values must be in the following range:

            ```javascript theme={null}
            0 < test_size < 1
            ```
          </ParamField>

          <ParamField path="time_split" type="boolean" default="false">
            Whether to split the data by time.
            Most recent data will be used for testing and previous data for training. Assumes data is passed
            already sorted ascending by time.
          </ParamField>

          <ParamField path="metrics" type="[array[string], null]">
            One or more metrics/scoring functions to evaluate the model with.
            When none is provided, will measure default metrics appropriate for the prediction task
            (classification vs. regression determined from model or type of target column). See
            [sklearn model evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html#common-cases-predefined-values)
            for further details.

            <Accordion title="Array items">
              <ParamField path="Item" type="string">
                Each item in array.

                Values must be one of the following:

                `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="tune" type="object">
        Configure hypertuning.
        Configures the optimization of model hyper-parameters via cross-validated grid- or randomized search.

        <Accordion title="Properties">
          <ParamField path="strategy" type="string" default="grid">
            Which search strategy to use for optimization.
            Grid search explores all possible combinations of parameters specified in `params`.
            Randomized search, on the other hand, randomly samples `iterations` parameter combinations
            from the distributions specified in `params`.

            Values must be one of the following:

            * `grid`
            * `random`
          </ParamField>

          <ParamField path="iterations" type="integer" default="10">
            How many randomly sampled parameter combinations to test in randomized search.

            Values must be in the following range:

            ```javascript theme={null}
            1 < iterations < inf
            ```
          </ParamField>

          <ParamField path="validate" type="[object, null]">
            Configure model validation.
            Allows evaluation of model performance via [cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html)
            using custom metrics. If not specified, will by default perform 5-fold cross-validation with automatically selected
            metrics.

            <Accordion title="Properties">
              <ParamField path="n_splits" type="[integer, null]" default="5">
                Number of train-test splits to evaluate the model on.
                Will split the dataset into training and test set `n_splits` times, train on the former
                and evaluate on the latter using specified or automatically selected `metrics`.

                Values must be in the following range:

                ```javascript theme={null}
                1 ≤ n_splits < inf
                ```
              </ParamField>

              <ParamField path="test_size" type="[number, null]">
                What proportion of the data to use for testing in each split.
                If `null` or not provided, will use [k-fold cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html#k-fold)
                to split the dataset. E.g. if `n_splits` is 5, the dataset will be split into 5 equal-sized parts.
                For five iterations four parts will then be used for training and the remaining part for testing.
                If `test_size` is a number between 0 and 1, in contrast, validation is done using a
                [shuffle-split](https://scikit-learn.org/stable/modules/cross_validation.html#shufflesplit)
                approach. Here, instead of splitting the data into `n_splits` equal parts up front, in each iteration
                we randomize the data and sample a proportion equal to `test_size` to use for evaluation and the remaining
                rows for training.

                Values must be in the following range:

                ```javascript theme={null}
                0 < test_size < 1
                ```
              </ParamField>

              <ParamField path="time_split" type="boolean" default="false">
                Whether to split the data by time.
                Most recent data will be used for testing and previous data for training. Assumes data is passed
                already sorted ascending by time.
              </ParamField>

              <ParamField path="metrics" type="[array[string], null]">
                One or more metrics/scoring functions to evaluate the model with.
                When none is provided, will measure default metrics appropriate for the prediction task
                (classification vs. regression determined from model or type of target column). See
                [sklearn model evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html#common-cases-predefined-values)
                for further details.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
                  </ParamField>
                </Accordion>
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="scorer" type="string">
            Each item in array.

            Values must be one of the following:

            `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
          </ParamField>

          <ParamField path="params" type="object">
            The parameter values to explore.
            Allows tuning of any and all of the parameters that can be set also as constants in the
            "params" attribute.

            Keys in this object should be strings identifying parameter names, and values should be
            *lists* of values to explore for that parameter. E.g. `"depth": [3, 5, 7]`.

            <Accordion title="Properties">
              <ParamField path="depth" type="array[integer]">
                List of depths values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="6">
                    The maximum depth of the tree.

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ Item ≤ 16
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="iterations" type="array[['integer', 'null']]">
                List of iterations values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[integer, null]" default="1000">
                    Number of iterations.
                    The maximum number of trees that can be built when solving machine learning problems. When using other parameters that limit the number of iterations, the final number of trees may be less than the number specified in this parameter.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="one_hot_max_size" type="array[integer]">
                List of values configuring max cardinality for one-hot encoding.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="10">
                    Maximum cardinality of variables to be one-hot encoded.
                    Use one-hot encoding for all categorical features with a number of different values less than or equal to this value. Other variables will be target-encoded. Note that one-hot encoding is faster than the alternatives, so decreasing this value makes it more likely slower methods will be used. See [CatBoost details](https://catboost.ai/docs/concepts/algorithm-main-stages_cat-to-numberic.html) for further information.

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_ctr_complexity" type="array[number]">
                List of values configuring variable combination complexity.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="2">
                    The maximum number of features that can be combined when transforming categorical variables.
                    Each resulting combination consists of one or more categorical features and can optionally contain binary features in the following form: “numeric feature > value”.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item ≤ 4
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="l2_leaf_reg" type="array[number]">
                List of leaf regularization strengths.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="3.0">
                    Coefficient at the L2 regularization term of the cost function.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0.0 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="border_count" type="array[integer]">
                List of border counts.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="254">
                    The number of splits for numerical features.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item ≤ 65535
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="random_strength" type="array[number]">
                List of random strengths.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="1.0">
                    The amount of randomness to use for scoring splits.
                    Use this parameter to avoid overfitting the model. The value multiplies the variance of a random variable (with
                    zero mean) that is added to the score used to select splits when a tree is grown.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="criterion" type="array[string]">
                List of criterion values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string" default="gini">
                    Function to measure the quality of a split.
                    Supported criteria are "gini" for the Gini impurity and "entropy" for the information gain.

                    Values must be one of the following:

                    * `gini`
                    * `entropy`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="splitter" type="array[string]">
                List of splitter values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string" default="best">
                    Strategy used to choose the split at each node.
                    Supported strategies are "best" to choose the best split and "random" to choose the best random split.

                    Values must be one of the following:

                    * `best`
                    * `random`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_depth" type="array[['integer', 'null']]">
                List of max\_depth values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[integer, null]" default="10">
                    Maximum depth of the tree.
                    The maximum depth of the tree. If null, then nodes are expanded until all leaves are pure
                    or until all leaves contain less than min\_samples\_split samples.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="min_samples_split" type="array[number]">
                List of min\_samples\_split values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="2">
                    Minimum number of samples required to split an internal node.
                    The minimum number of samples required to split an internal node. If int, then consider min\_samples\_split
                    as the minimum *count*. If float, then min\_samples\_split is a *fraction* and `ceil(min_samples_split * n_samples)`
                    are the minimum number of samples for each split.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="min_samples_leaf" type="array[number]">
                List of min\_samples\_leaf values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="1">
                    Minimum number of samples required to be at a leaf node.
                    The minimum number of samples required to be at a leaf node. A split point at any depth will only be
                    considered if it leaves at least `min_samples_leaf` training samples in each of the left and right branches.
                    This may have the effect of smoothing the model, especially in regression.

                    If int, then consider `min_samples_leaf` as the minimum *count*. If float, then `min_samples_leaf` is
                    a *fraction* and `ceil(min_samples_leaf * n_samples)` are the minimum number of samples for each node.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_leaf_nodes" type="array[['integer', 'null']]">
                List of max\_leaf\_nodes values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[integer, null]">
                    Grow a tree with `max_leaf_nodes` in best-first fashion.
                    Best nodes are defined as relative reduction in impurity. If null then unlimited number of leaf nodes.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_features" type="array[['number', 'string', 'null']]">
                List of max\_features values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[number, string, null]">
                    Number of features to consider when looking for the best split.
                    The number of features to consider when looking for the best split:

                    * If int, then consider `max_features` features at each split.
                    * If float, then `max_features` is a *fraction* and `int(max_features * n_features)` features are considered at each split.
                    * If "auto", then `max_features=sqrt(n_features)`.
                    * If "sqrt", then `max_features=sqrt(n_features)`.
                    * If "log2", then `max_features=log2(n_features)`.
                    * If null, then `max_features=n_features`.

                    Note: the search for a split does not stop until at least one valid partition of the node samples is found,
                    even if it requires to effectively inspect more than `max_features` features.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="ccp_alpha" type="array[number]">
                List of ccp\_alpha values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="0.0">
                    Complexity parameter used for Minimal Cost-Complexity Pruning.
                    Minimal Cost-Complexity Pruning recursively finds the node with the "weakest link". The weakest link is
                    characterized by an effective alpha, where the nodes with the smallest effective alpha are pruned first.
                    As alpha increases, more of the tree is pruned, which increases the total impurity of its leaves.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0.0 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="seed" type="integer">
        Seed for random number generator ensuring reproducibility.

        Values must be in the following range:

        ```javascript theme={null}
        0 ≤ seed < inf
        ```
      </ParamField>

      <ParamField path="sort" type="object">
        Sort the data before training.
        If the data is not already sorted by time, you can sort it here. This is useful when you want to split the data
        by time, for example to train on older data and test on newer data (see the `time_split` parameter in validation
        configurations). If the data is already sorted by time, you can ignore this parameter.

        <Accordion title="Properties">
          <ParamField path="columns" type="[string, array[string]]">
            One or more column to sort by.

            <Accordion title="Array items">
              <ParamField path="Item" type="string (ds.column)">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ascending" type="[boolean, array[boolean]]" default="true">
            Sort order.
            Whether to sort in ascending or descending order. If the single value `true` is provided, or no value is specified,
            all columns will be sorted in ascending order. If a single `false` is provided, all columns will be sorted in descending
            order. If an array of booleans is provided, each column will be sorted according to the corresponding boolean value.

            <Accordion title="Array items">
              <ParamField path="Item" type="boolean">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>
    </Tab>

    <Tab title="ExtraTreesClassifier">
      <ParamField path="model" type="string" default="ExtraTreesClassifier">
        Train an [ExtraTrees Classifier](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.ExtraTreesClassifier.html).
        Fits a number of randomized decision trees for improved accuracy.
        The ExtraTreesClassifier is an ensemble learning method fundamentally similar to a random forest.
        It fits a number of randomized decision trees on various sub-samples of the dataset and uses
        averaging to improve the predictive accuracy and control over-fitting.
        The main difference from the random forest is in the way it splits nodes, which is random in ExtraTrees,
        leading to more diversified trees and thus, a more robust model against overfitting on the training data.
      </ParamField>

      <ParamField path="target" type="string (ds.column:category|boolean)" required>
        Target variable (labels).
        Name of the column that contains your target values (labels).
      </ParamField>

      <ParamField path="positive_class" type="[string, null]">
        Name of the positive class.
        In *binary* classification, usually the class you're most interested in, for example the label/class
        corresponding to successful lead conversion in a lead score model, the class corresponding to a
        customer who has churned in a churn prediction model, etc.

        If provided, will automaticall measure the performance (accuracy, precision, recall) of the model on this
        class, in addition to averages across all classes. If not provided, only summary metrics will be reported.
      </ParamField>

      <ParamField path="max_classes" type="integer" default="10">
        Maximum number of classes in the target variable.
        If there are more classes than this, the least frequent classes will be grouped together into a single class
        called "others". Reducing the number of classes in the target variable can help improve model performance,
        especially when the number of classes is very large, some classes are very rare, or the dataset doesn't have
        sufficient samples for all classes. Raising this significantly might lead to much longer training times.

        Values must be in the following range:

        ```javascript theme={null}
        2 ≤ max_classes ≤ 100
        ```
      </ParamField>

      <ParamField path="feature_importance" type="[string, boolean, null]" default="native">
        Importance of each feature in the model.
        Whether and how to measure each feature's contribution to the model's predictions. The higher the value,
        the more important the feature was in the model. Only relative values are meaningful, i.e. the importance
        of a feature relative to other features in the model.

        Also note that feature importance is usually meaningful only for models that fit the data well.

        The default (`null`, `true` or `"native"`) uses the classifier's native feature importance measure, e.g.
        [prediction-value-change](https://catboost.ai/en/docs/concepts/fstr#regular-feature-importance) in the case
        of Catboost, [Gini importance](https://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html#sklearn.tree.DecisionTreeClassifier.feature_importances_)
        in the case of scikit-learn's DecisionTreeClassifier, and the mean of absolute coefficients in the case of
        logistic regression.

        When set to `"permutation"`, uses [permutation importance](https://scikit-learn.org/stable/modules/permutation_importance.html),
        i.e. measures the decrease in model score when a single feature's values are randomly shuffled. This is
        considerably slower than native feature importance (the model needs to be evaluated an additional k\*n times,
        where k is the number of features and n the number of repetitions to average over). On the positive side it is
        model-agnostic and doesn't suffer from bias towards high cardinality features (like some tree-based feature
        importances). On the negative side, it can be sensitive to strongly correlated features, as the unshuffled
        correlated variable is still available to the model when shuffling the original variable.

        When set to `false`, no feature importance will be calculated.

        Values must be one of the following:

        * `True`
        * `False`
        * `native`
        * `permutation`
        * `null`
      </ParamField>

      <ParamField path="encode_features" type="boolean" default="true">
        Toggle encoding of feature columns.
        When enabled, Graphext will auto-convert any column types to the numeric type before
        fitting the model. How this conversion is done can be configured using the `feature_encoder`
        option below.

        <Warning>If disabled, any model trained in this step will assume that input data
        is already in an appropriate format (e.g. numerical and not containing any missing values).</Warning>
      </ParamField>

      <ParamField path="feature_encoder" type="[null, object]">
        Configures encoding of feature columns.
        By default (`null`), Graphext chooses automatically how to convert any column types the model
        may not understand natively to a numeric type.

        A configuration object can be passed instead to overwrite specific parameter values with respect
        to their default values.

        <Accordion title="Properties">
          <ParamField path="number" type="object">
            Numeric encoder.
            Configures encoding of numeric features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="scaler_params" type="object">
                Further parameters passed to the `scaler` function.
                Details depend no the particular scaler used.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="bool" type="object">
            Boolean encoder.
            Configures encoding of boolean features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ordinal" type="object">
            Ordinal encoder.
            Configures encoding of categorical features that have a natural order.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="category" type="[object, object]">
            Category encoder.
            May contain either a single configuration for all categorical variables, or two different configurations
            for low- and high-cardinality variables. For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple category encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="imputer" type="[null, string]">
                    Whether and how to impute (replace/fill) missing values.

                    Values must be one of the following:

                    * `MostFrequent`
                    * `Const`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of unique categories to encode.
                    Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                    "Others" category.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories.

                    Values must be one of the following:

                    `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    Whether and how to scale the final numerical values (across a single column).

                    Values must be one of the following:

                    * `Standard`
                    * `Robust`
                    * `KNN`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional category encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for categories with fewer than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="imputer" type="[null, string]">
                        Whether and how to impute (replace/fill) missing values.

                        Values must be one of the following:

                        * `MostFrequent`
                        * `Const`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of unique categories to encode.
                        Only the N-1 most common categories will be encoded, and the rest will be grouped into a single
                        "Others" category.

                        Values must be in the following range:

                        ```javascript theme={null}
                        1 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories.

                        Values must be one of the following:

                        `OneHot` `Label` `Ordinal` `Binary` `Frequency` `None`
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        Whether and how to scale the final numerical values (across a single column).

                        Values must be one of the following:

                        * `Standard`
                        * `Robust`
                        * `KNN`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="multilabel" type="[object, object]">
            Multilabel encoder.
            Configures encoding of multivalued categorical features (variable length lists of categories,
            or the semantic type `list[category]` for short). May contain either a single configuration for
            all multilabel variables, or two different configurations for low- and high-cardinality variables.
            For further details pick one of the two options below.

            <Accordion title="Options">
              <Tabs>
                <Tab title="Simple multilabel encoder">
                  <ParamField path="indicate_missing" type="boolean">
                    Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                  </ParamField>

                  <ParamField path="encoder" type="[null, string]">
                    How to encode categories/labels in multilabel (list\[category]) columns.

                    Values must be one of the following:

                    * `Binarizer`
                    * `TfIdf`
                    * `None`
                  </ParamField>

                  <ParamField path="max_categories" type="[null, integer]">
                    Maximum number of categories/labels to encode.
                    If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                    using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                    When applied together with (after a) Tf-Idf encoding, this performs a kind of
                    [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ max_categories < inf
                    ```
                  </ParamField>

                  <ParamField path="scaler" type="[null, string]">
                    How to scale the encoded (numerical columns).

                    Values must be one of the following:

                    * `Euclidean`
                    * `KNN`
                    * `Norm`
                    * `None`
                  </ParamField>
                </Tab>

                <Tab title="Conditional multilabel encoder">
                  <ParamField path="cardinality_treshold" type="integer">
                    Condition for application of low- or high-cardinality configuration.
                    Number of unique categories below which the `low_cardinality` configuration is used,
                    and above which the `high_cardinality` configuration is used.

                    Values must be in the following range:

                    ```javascript theme={null}
                    3 ≤ cardinality_treshold < inf
                    ```
                  </ParamField>

                  <ParamField path="low_cardinality" type="object">
                    Low cardinality configuration.
                    Used for mulitabel columns with fewer than `cardinality_threshold` unique categories/labels.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>

                  <ParamField path="high_cardinality" type="object">
                    High cardinality configuration.
                    Used for categories with more than `cardinality_threshold` unique categories.

                    <Accordion title="Properties">
                      <ParamField path="indicate_missing" type="boolean">
                        Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
                      </ParamField>

                      <ParamField path="encoder" type="[null, string]">
                        How to encode categories/labels in multilabel (list\[category]) columns.

                        Values must be one of the following:

                        * `Binarizer`
                        * `TfIdf`
                        * `None`
                      </ParamField>

                      <ParamField path="max_categories" type="[null, integer]">
                        Maximum number of categories/labels to encode.
                        If a number is provided, the result of the encoding will be reduced to these many dimensions (columns)
                        using scikit-learn's [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                        When applied together with (after a) Tf-Idf encoding, this performs a kind of
                        [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).

                        Values must be in the following range:

                        ```javascript theme={null}
                        2 ≤ max_categories < inf
                        ```
                      </ParamField>

                      <ParamField path="scaler" type="[null, string]">
                        How to scale the encoded (numerical columns).

                        Values must be one of the following:

                        * `Euclidean`
                        * `KNN`
                        * `Norm`
                        * `None`
                      </ParamField>
                    </Accordion>
                  </ParamField>
                </Tab>
              </Tabs>
            </Accordion>
          </ParamField>

          <ParamField path="datetime" type="object">
            Datetime encoder.
            Configures encoding of datetime (timestamp) features.

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="components" type="array[string]">
                A list of numerical components to extract.
                Will create one numeric column for each component.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    `day` `dayofweek` `dayofyear` `hour` `minute` `month` `quarter` `season` `second` `week` `weekday` `weekofyear` `year`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="cycles" type="array[string]">
                A list of cyclical time features to extract.
                "Cycles" are numerical transformations of features that should be represented on a circle. E.g. months,
                ranging from 1 to 12, should be arranged such that 12 and 1 are next to each other, rather than on
                opposite ends of a linear scale. We represent such cyclical time features on a circle by creating two
                columns for each original feature: the sin and cos of the numerical feature after appropriate scaling.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    * `day`
                    * `dayofweek`
                    * `dayofyear`
                    * `hour`
                    * `month`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="epoch" type="[null, boolean]">
                Whether to include the epoch as new feature (seconds since 01/01/1970).
              </ParamField>

              <ParamField path="imputer" type="[null, string]">
                Whether and how to impute (replace/fill) missing values.

                Values must be one of the following:

                * `Mean`
                * `Median`
                * `MostFrequent`
                * `Const`
                * `None`
              </ParamField>

              <ParamField path="component_scaler" type="[null, string]">
                Whether and how to scale the final numerical values (across a single column).

                Values must be one of the following:

                * `Standard`
                * `Robust`
                * `KNN`
                * `None`
              </ParamField>

              <ParamField path="vector_scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="embedding" type="object">
            Embedding/vector encoder.
            Configures encoding of multivalued numerical features (variable length lists of numbers, i.e. vectors, or the semantic type `list[number]` for short).

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="text" type="object">
            Text encoder.
            Configures encoding of text (natural language) features. Currently only allows
            [Tf-Idf](https://en.wikipedia.org/wiki/Tf%E2%80%93idf) embeddings to represent texts. If you wish
            to use other embeddings, e.g. semantic, Word2Vec etc., transform your text column first using
            another step, and then use that result instead of the original texts.

            <Warning>Texts are *excluded* by default from the overall encoding of the dataset. See parameter
            `include_text_features` below to active it.</Warning>

            <Accordion title="Properties">
              <ParamField path="indicate_missing" type="boolean">
                Toggle the addition of a column using 0s and 1s to indicate where an input column contained missing values.
              </ParamField>

              <ParamField path="encoder_params" type="object">
                Parameters to be passed to the text encoder (Tf-Idf parameters only for now).
                See [scikit-learn's documentation](https://scikit-learn.org/stable/modules/generated/sklearn.feature_extraction.text.TfidfVectorizer.html)
                for detailed parameters and their explanation.
              </ParamField>

              <ParamField path="n_components" type="integer">
                How many output features to generate.
                The resulting Tf-Idf vectors will be reduced to these many dimensions (columns) using scikit-learn's
                [truncated SVD](https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html).
                This performs a kind of [latent semantic analysis](https://en.wikipedia.org/wiki/Latent_semantic_analysis).
                By default we will reduce to 200 components.

                Values must be in the following range:

                ```javascript theme={null}
                2 ≤ n_components ≤ 1024
                ```
              </ParamField>

              <ParamField path="scaler" type="[null, string]">
                How to scale the encoded (numerical columns).

                Values must be one of the following:

                * `Euclidean`
                * `KNN`
                * `Norm`
                * `None`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="include_text_features" type="boolean" default="false">
        Whether to include or ignore text columns during the processing of input data.
        Enabling this will convert texts to their TfIdf representation. Each text will be
        converted to an N-dimensional vector in which each component measures the relative
        "over-representation" of a specific word (or n-gram) relative to its overall
        frequency in the whole dataset. This is disabled by default because it will
        often be better to convert texts explicitly using a previous step, such as
        `embed_text` or `embed_text_with_model`.
      </ParamField>

      <ParamField path="params" type="object">
        RandomForest configuration parameters.
        You can check the official documentation for more details about RandomForest's parameters [here](https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html).

        <Accordion title="Properties">
          <ParamField path="n_estimators" type="integer" default="100">
            The number of trees in the forest.
            The number of trees in the forest. A larger number of trees increases the performance but also the computational cost.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ n_estimators < inf
            ```
          </ParamField>

          <ParamField path="criterion" type="string" default="gini">
            The function to measure the quality of a split.
            The function to measure the quality of a split. Supported criteria are "gini" for the Gini impurity and "entropy" for the information gain.

            Values must be one of the following:

            * `gini`
            * `entropy`
          </ParamField>

          <ParamField path="max_depth" type="[integer, null]">
            The maximum depth of the tree.
            The maximum depth of the tree. If `null`, then nodes are expanded until all leaves are pure or until all leaves contain less than min\_samples\_split samples.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ max_depth < inf
            ```
          </ParamField>

          <ParamField path="class_weight" type="[string, null]" default="balanced">
            How to weigh each class of the target variable.
            If `null`, all classes will have a weight of one. The "balanced" mode uses the values of the target y to
            automatically adjust weights inversely proportional to class frequencies in the input data
            as `n_samples / (n_classes * np.bincount(y))`.

            The “balanced\_subsample” mode is the same as “balanced” except that weights are computed based on the bootstrap
            sample for every tree grown.

            Values must be one of the following:

            * `balanced`
            * `balanced_subsample`
            * `None`
          </ParamField>

          <ParamField path="min_samples_split" type="integer" default="2">
            The minimum number of samples required to split an internal node.
            The minimum number of samples required to split an internal node. A split point at any depth will only be considered if it leaves at least `min_samples_split` training samples in each of the left and right branches.

            Values must be in the following range:

            ```javascript theme={null}
            2 ≤ min_samples_split < inf
            ```
          </ParamField>

          <ParamField path="min_samples_leaf" type="integer" default="1">
            The minimum number of samples required to be at a leaf node.
            A split point at any depth will only be considered if it leaves at least `min_samples_leaf` training samples in each of the left and right branches. This may have the effect of smoothing the model.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ min_samples_leaf < inf
            ```
          </ParamField>

          <ParamField path="min_weight_fraction_leaf" type="number" default="0.0">
            The minimum weighted fraction of the sum total of weights required to be at a leaf node.
            The minimum weighted fraction of the sum total of weights (of all the input samples) required to be at a leaf node. Samples have equal weight when sample\_weight is not provided.

            Values must be in the following range:

            ```javascript theme={null}
            0.0 ≤ min_weight_fraction_leaf ≤ 0.5
            ```
          </ParamField>

          <ParamField path="max_features" type="[string, integer, null]">
            The number of features to consider when looking for the best split.
            The number of features to consider when looking for the best split. If “auto”, then `max_features=sqrt(n_features)`. If `null`, then `max_features=n_features`.
          </ParamField>

          <ParamField path="max_leaf_nodes" type="[integer, null]">
            Grow trees with max\_leaf\_nodes in best-first fashion.
            Grow trees with `max_leaf_nodes` in best-first fashion. Best nodes are defined as relative reduction in impurity. If `null` then unlimited number of leaf nodes.
          </ParamField>

          <ParamField path="min_impurity_decrease" type="number" default="0.0">
            A node will be split if this split induces a decrease of the impurity greater than or equal to this value.
            A node will be split if this split induces a decrease of the impurity greater than or equal to this value. This may have the effect of smoothing the model, especially in regression.

            Values must be in the following range:

            ```javascript theme={null}
            0.0 ≤ min_impurity_decrease < inf
            ```
          </ParamField>

          <ParamField path="bootstrap" type="boolean" default="true">
            Whether bootstrap samples are used when building trees.
            If `true`, bootstrap samples are used when building trees. If `false`, the whole dataset is used to build each tree.
          </ParamField>

          <ParamField path="random_state" type="[integer, null]">
            Controls both the randomness of the bootstrapping of the samples used when building trees and the sampling of the features to consider when looking for the best split at each node.
          </ParamField>

          <ParamField path="max_samples" type="[integer, null]">
            If bootstrap is True, the number of samples to draw from X to train each base estimator.
            If bootstrap is True, the number of samples to draw from X to train each base estimator. If `null` (default), then draw `X.shape[0]` samples.
          </ParamField>

          <ParamField path="ccp_alpha" type="number" default="0.0">
            Complexity parameter used for Minimal Cost-Complexity Pruning.
            Complexity parameter used for Minimal Cost-Complexity Pruning. The subtree with the largest cost complexity that is smaller than `ccp_alpha` will be chosen. By default, no pruning is performed.

            Values must be in the following range:

            ```javascript theme={null}
            0.0 ≤ ccp_alpha < inf
            ```
          </ParamField>

          <ParamField path="n_jobs" type="integer" default="-1">
            The number of jobs to run in parallel for both `fit` and `predict`.
            The number of jobs to run in parallel for both `fit` and `predict`. `-1` means using all processors.
          </ParamField>

          <ParamField path="verbose" type="integer" default="0">
            Controls the verbosity when fitting and predicting.
            Controls the verbosity when fitting and predicting.

            Values must be in the following range:

            ```javascript theme={null}
            0 ≤ verbose < inf
            ```
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="validate" type="[object, null]">
        Configure model validation.
        Allows evaluation of model performance via [cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html)
        using custom metrics. If not specified, will by default perform 5-fold cross-validation with automatically selected
        metrics.

        <Accordion title="Properties">
          <ParamField path="n_splits" type="[integer, null]" default="5">
            Number of train-test splits to evaluate the model on.
            Will split the dataset into training and test set `n_splits` times, train on the former
            and evaluate on the latter using specified or automatically selected `metrics`.

            Values must be in the following range:

            ```javascript theme={null}
            1 ≤ n_splits < inf
            ```
          </ParamField>

          <ParamField path="test_size" type="[number, null]">
            What proportion of the data to use for testing in each split.
            If `null` or not provided, will use [k-fold cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html#k-fold)
            to split the dataset. E.g. if `n_splits` is 5, the dataset will be split into 5 equal-sized parts.
            For five iterations four parts will then be used for training and the remaining part for testing.
            If `test_size` is a number between 0 and 1, in contrast, validation is done using a
            [shuffle-split](https://scikit-learn.org/stable/modules/cross_validation.html#shufflesplit)
            approach. Here, instead of splitting the data into `n_splits` equal parts up front, in each iteration
            we randomize the data and sample a proportion equal to `test_size` to use for evaluation and the remaining
            rows for training.

            Values must be in the following range:

            ```javascript theme={null}
            0 < test_size < 1
            ```
          </ParamField>

          <ParamField path="time_split" type="boolean" default="false">
            Whether to split the data by time.
            Most recent data will be used for testing and previous data for training. Assumes data is passed
            already sorted ascending by time.
          </ParamField>

          <ParamField path="metrics" type="[array[string], null]">
            One or more metrics/scoring functions to evaluate the model with.
            When none is provided, will measure default metrics appropriate for the prediction task
            (classification vs. regression determined from model or type of target column). See
            [sklearn model evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html#common-cases-predefined-values)
            for further details.

            <Accordion title="Array items">
              <ParamField path="Item" type="string">
                Each item in array.

                Values must be one of the following:

                `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="tune" type="object">
        Configure hypertuning.
        Configures the optimization of model hyper-parameters via cross-validated grid- or randomized search.

        <Accordion title="Properties">
          <ParamField path="strategy" type="string" default="grid">
            Which search strategy to use for optimization.
            Grid search explores all possible combinations of parameters specified in `params`.
            Randomized search, on the other hand, randomly samples `iterations` parameter combinations
            from the distributions specified in `params`.

            Values must be one of the following:

            * `grid`
            * `random`
          </ParamField>

          <ParamField path="iterations" type="integer" default="10">
            How many randomly sampled parameter combinations to test in randomized search.

            Values must be in the following range:

            ```javascript theme={null}
            1 < iterations < inf
            ```
          </ParamField>

          <ParamField path="validate" type="[object, null]">
            Configure model validation.
            Allows evaluation of model performance via [cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html)
            using custom metrics. If not specified, will by default perform 5-fold cross-validation with automatically selected
            metrics.

            <Accordion title="Properties">
              <ParamField path="n_splits" type="[integer, null]" default="5">
                Number of train-test splits to evaluate the model on.
                Will split the dataset into training and test set `n_splits` times, train on the former
                and evaluate on the latter using specified or automatically selected `metrics`.

                Values must be in the following range:

                ```javascript theme={null}
                1 ≤ n_splits < inf
                ```
              </ParamField>

              <ParamField path="test_size" type="[number, null]">
                What proportion of the data to use for testing in each split.
                If `null` or not provided, will use [k-fold cross-validation](https://scikit-learn.org/stable/modules/cross_validation.html#k-fold)
                to split the dataset. E.g. if `n_splits` is 5, the dataset will be split into 5 equal-sized parts.
                For five iterations four parts will then be used for training and the remaining part for testing.
                If `test_size` is a number between 0 and 1, in contrast, validation is done using a
                [shuffle-split](https://scikit-learn.org/stable/modules/cross_validation.html#shufflesplit)
                approach. Here, instead of splitting the data into `n_splits` equal parts up front, in each iteration
                we randomize the data and sample a proportion equal to `test_size` to use for evaluation and the remaining
                rows for training.

                Values must be in the following range:

                ```javascript theme={null}
                0 < test_size < 1
                ```
              </ParamField>

              <ParamField path="time_split" type="boolean" default="false">
                Whether to split the data by time.
                Most recent data will be used for testing and previous data for training. Assumes data is passed
                already sorted ascending by time.
              </ParamField>

              <ParamField path="metrics" type="[array[string], null]">
                One or more metrics/scoring functions to evaluate the model with.
                When none is provided, will measure default metrics appropriate for the prediction task
                (classification vs. regression determined from model or type of target column). See
                [sklearn model evaluation](https://scikit-learn.org/stable/modules/model_evaluation.html#common-cases-predefined-values)
                for further details.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string">
                    Each item in array.

                    Values must be one of the following:

                    `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
                  </ParamField>
                </Accordion>
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="scorer" type="string">
            Each item in array.

            Values must be one of the following:

            `accuracy` `balanced_accuracy` `f1_micro` `f1_macro` `f1_samples` `f1_weighted` `precision_micro` `precision_macro` `precision_samples` `precision_weighted` `recall_micro` `recall_macro` `recall_samples` `recall_weighted` `roc_auc` `roc_auc_ovr` `roc_auc_ovo` `roc_auc_ovr_weighted` `roc_auc_ovo_weighted`
          </ParamField>

          <ParamField path="params" type="object">
            The parameter values to explore.
            Allows tuning of any and all of the parameters that can be set also as constants in the
            "params" attribute.

            Keys in this object should be strings identifying parameter names, and values should be
            *lists* of values to explore for that parameter. E.g. `"depth": [3, 5, 7]`.

            <Accordion title="Properties">
              <ParamField path="depth" type="array[integer]">
                List of depths values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="6">
                    The maximum depth of the tree.

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ Item ≤ 16
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="iterations" type="array[['integer', 'null']]">
                List of iterations values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[integer, null]" default="1000">
                    Number of iterations.
                    The maximum number of trees that can be built when solving machine learning problems. When using other parameters that limit the number of iterations, the final number of trees may be less than the number specified in this parameter.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="one_hot_max_size" type="array[integer]">
                List of values configuring max cardinality for one-hot encoding.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="10">
                    Maximum cardinality of variables to be one-hot encoded.
                    Use one-hot encoding for all categorical features with a number of different values less than or equal to this value. Other variables will be target-encoded. Note that one-hot encoding is faster than the alternatives, so decreasing this value makes it more likely slower methods will be used. See [CatBoost details](https://catboost.ai/docs/concepts/algorithm-main-stages_cat-to-numberic.html) for further information.

                    Values must be in the following range:

                    ```javascript theme={null}
                    2 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_ctr_complexity" type="array[number]">
                List of values configuring variable combination complexity.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="2">
                    The maximum number of features that can be combined when transforming categorical variables.
                    Each resulting combination consists of one or more categorical features and can optionally contain binary features in the following form: “numeric feature > value”.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item ≤ 4
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="l2_leaf_reg" type="array[number]">
                List of leaf regularization strengths.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="3.0">
                    Coefficient at the L2 regularization term of the cost function.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0.0 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="border_count" type="array[integer]">
                List of border counts.

                <Accordion title="Array items">
                  <ParamField path="Item" type="integer" default="254">
                    The number of splits for numerical features.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 ≤ Item ≤ 65535
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="random_strength" type="array[number]">
                List of random strengths.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="1.0">
                    The amount of randomness to use for scoring splits.
                    Use this parameter to avoid overfitting the model. The value multiplies the variance of a random variable (with
                    zero mean) that is added to the score used to select splits when a tree is grown.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="criterion" type="array[string]">
                List of criterion values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string" default="gini">
                    Function to measure the quality of a split.
                    Supported criteria are "gini" for the Gini impurity and "entropy" for the information gain.

                    Values must be one of the following:

                    * `gini`
                    * `entropy`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="splitter" type="array[string]">
                List of splitter values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="string" default="best">
                    Strategy used to choose the split at each node.
                    Supported strategies are "best" to choose the best split and "random" to choose the best random split.

                    Values must be one of the following:

                    * `best`
                    * `random`
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_depth" type="array[['integer', 'null']]">
                List of max\_depth values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[integer, null]" default="10">
                    Maximum depth of the tree.
                    The maximum depth of the tree. If null, then nodes are expanded until all leaves are pure
                    or until all leaves contain less than min\_samples\_split samples.

                    Values must be in the following range:

                    ```javascript theme={null}
                    1 < Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="min_samples_split" type="array[number]">
                List of min\_samples\_split values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="2">
                    Minimum number of samples required to split an internal node.
                    The minimum number of samples required to split an internal node. If int, then consider min\_samples\_split
                    as the minimum *count*. If float, then min\_samples\_split is a *fraction* and `ceil(min_samples_split * n_samples)`
                    are the minimum number of samples for each split.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="min_samples_leaf" type="array[number]">
                List of min\_samples\_leaf values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="1">
                    Minimum number of samples required to be at a leaf node.
                    The minimum number of samples required to be at a leaf node. A split point at any depth will only be
                    considered if it leaves at least `min_samples_leaf` training samples in each of the left and right branches.
                    This may have the effect of smoothing the model, especially in regression.

                    If int, then consider `min_samples_leaf` as the minimum *count*. If float, then `min_samples_leaf` is
                    a *fraction* and `ceil(min_samples_leaf * n_samples)` are the minimum number of samples for each node.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_leaf_nodes" type="array[['integer', 'null']]">
                List of max\_leaf\_nodes values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[integer, null]">
                    Grow a tree with `max_leaf_nodes` in best-first fashion.
                    Best nodes are defined as relative reduction in impurity. If null then unlimited number of leaf nodes.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="max_features" type="array[['number', 'string', 'null']]">
                List of max\_features values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="[number, string, null]">
                    Number of features to consider when looking for the best split.
                    The number of features to consider when looking for the best split:

                    * If int, then consider `max_features` features at each split.
                    * If float, then `max_features` is a *fraction* and `int(max_features * n_features)` features are considered at each split.
                    * If "auto", then `max_features=sqrt(n_features)`.
                    * If "sqrt", then `max_features=sqrt(n_features)`.
                    * If "log2", then `max_features=log2(n_features)`.
                    * If null, then `max_features=n_features`.

                    Note: the search for a split does not stop until at least one valid partition of the node samples is found,
                    even if it requires to effectively inspect more than `max_features` features.
                  </ParamField>
                </Accordion>
              </ParamField>

              <ParamField path="ccp_alpha" type="array[number]">
                List of ccp\_alpha values to explore.

                <Accordion title="Array items">
                  <ParamField path="Item" type="number" default="0.0">
                    Complexity parameter used for Minimal Cost-Complexity Pruning.
                    Minimal Cost-Complexity Pruning recursively finds the node with the "weakest link". The weakest link is
                    characterized by an effective alpha, where the nodes with the smallest effective alpha are pruned first.
                    As alpha increases, more of the tree is pruned, which increases the total impurity of its leaves.

                    Values must be in the following range:

                    ```javascript theme={null}
                    0.0 ≤ Item < inf
                    ```
                  </ParamField>
                </Accordion>
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>

      <ParamField path="seed" type="integer">
        Seed for random number generator ensuring reproducibility.

        Values must be in the following range:

        ```javascript theme={null}
        0 ≤ seed < inf
        ```
      </ParamField>

      <ParamField path="sort" type="object">
        Sort the data before training.
        If the data is not already sorted by time, you can sort it here. This is useful when you want to split the data
        by time, for example to train on older data and test on newer data (see the `time_split` parameter in validation
        configurations). If the data is already sorted by time, you can ignore this parameter.

        <Accordion title="Properties">
          <ParamField path="columns" type="[string, array[string]]">
            One or more column to sort by.

            <Accordion title="Array items">
              <ParamField path="Item" type="string (ds.column)">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>

          <ParamField path="ascending" type="[boolean, array[boolean]]" default="true">
            Sort order.
            Whether to sort in ascending or descending order. If the single value `true` is provided, or no value is specified,
            all columns will be sorted in ascending order. If a single `false` is provided, all columns will be sorted in descending
            order. If an array of booleans is provided, each column will be sorted according to the corresponding boolean value.

            <Accordion title="Array items">
              <ParamField path="Item" type="boolean">
                Each item in array.
              </ParamField>
            </Accordion>
          </ParamField>
        </Accordion>
      </ParamField>
    </Tab>
  </Tabs>
</Accordion>
