Cross Validator -- Regression

On this Page


This is a Transform type Snap that performs K-fold Cross Validation on a regression dataset. Cross validation is a technique for evaluating ML algorithms by splitting the original dataset into K equally-sized chunks. K is the number of folds. In each of the K iterations, K-1 chunks are used to train the model while the last chunk is used as a test set. The average error and other statistics are computed to be used to select the most suitable algorithm for the dataset. 

In the settings, you can select the algorithm, specify parameters, and number of folds. If you want to perform K-fold Cross Validation on classification dataset, use the Cross Validator - Classification Snap instead. 

Input and Output

Expected input: The regression dataset.

Expected output: Statistical information about the performance of the selected algorithm on the dataset.

Expected upstream Snap: Any Snap that generates a dataset document. For example, CSV Generator, JSON Generator, or a combination of File Reader and JSON Parser.

Expected downstream Snap: CSV/JSON Formatter Snap and File Writer Snap can be used to write the output statistics to file.


  • The data from upstream Snap must be in tabular format (no nested structure). 
  • This Snap automatically derives the schema (field names and types) from the first document. Therefore, the first document must not have any missing values.

Configuring Accounts

Accounts are not used with this Snap.

Configuring Views


This Snap has exactly one document input view.
OutputThis Snap has exactly one document output view.
ErrorThis Snap has at most one document error view.



Limitations and Known Issues



Snap Settings

LabelRequired. The name for the Snap. Modify this to be more specific, especially if there are more than one of the same Snap in the pipeline.
Label field

Required. The label or output field in the dataset. This must be numeric. This is the field that the model will be trained to predict.

Default value: None

Example: $price


Required. The regression algorithm to be used to build the model. There are four regression algorithms available currently:

  • K-Nearest Neighbors
  • Linear Regression
  • Decision Stump
  • Random Forests

The implementations are from WEKA, an open source machine learning library in Java.

Default value: K-Nearest Neighbors


The parameters to be applied on the selected algorithm. Each algorithm has a different set of parameters to be configured in this property. If this property is left blank, the default values are applied for all the parameters. If specifying multiple parameters, separate them with a comma ",".

See Options for Algorithms section below for details.

Default value: None


  • batch_size = 120
  • batch_size = 120, collapse_tree = true

Required. The number of folds.

Minimum value: 2

Default value: 10

Use random seed

If selected, Random seed is applied to the randomizer in order to get reproducible results.

Default value: Selected

Random seed

RequiredNumber used as static seed for randomizer.

Default value: 12345

Snap Execution

Select one of the three modes in which the Snap executes. Available options are:

  • Validate & Execute: Performs limited execution of the Snap, and generates a data preview during Pipeline validation. Subsequently, performs full execution of the Snap (unlimited records) during Pipeline runtime.
  • Execute only: Performs full execution of the Snap during Pipeline execution without generating preview data.
  • Disabled: Disables the Snap and all Snaps that are downstream from it.

Options for Algorithms

 Click here to expand...

This section lists all applicable parameters for each algorithm along with their default values. 

K-Nearest Neighbors

Option Name
Option Data Type
Default Value
knnint1Set the number of neighbors the learner will use.
batch_sizeint100Set the preferred batch size for batch prediction.
cross_validatebooleanfalseSet whether the hold-one-out cross-validation will be used to select the best k-value.
[weight_none, weight_inverse, weight_similarity]
weight_noneSet the distance weighting method used. 
do_not_check_capabilitiesbooleanfalseEnable capability-check.
mean_squaredbooleanfalseSet whether the mean squared error is used rather than mean absolute error when doing cross-validation.
[LinearNNSearch, BallTree, CoverTree, KDTress, FilteredNeighbourSearch]
LinearNNSearchSet the nearestNeighbourSearch algorithm to be used for finding nearest neighbor(s).
num_decimal_placesint2Set the number of decimal places.
window_sizeint0 (no window size)Set the maximum number of instances allowed in the training pool.

Linear Regression

Option Name
Option Data Type
Default Value
[slection_none, selection_m5, selection_greedy]
selection_m5Set the attribute selection method to use.
batch_sizeint100Set the preferred batch size for batch prediction.
do_not_check_capabilitiesbooleanfalseSet whether not to check capabilities.
eliminate_colinear_attributesbooleantrueSet whether to try to eliminate colinear attributes.
minimalbooleanfalseSet to conserve memory, don't keep dataset header and means/stdevs.
num_decimal_placesint4Set the number of decimal places.
ridgedouble1.00E-08Set the value of the ridge parameter.

Decision Stump

Option Name
Data Type
Default Value
batch_sizeint100Set the preferred batch size for batch prediction.
do_not_check_capabilitiesbooleanfalseEnable capability-check.
num_decimal_placesint2Set the number of decimal places.

Random Forests

Option Name
Data Type
Default Value
bag_size_percentint100Specify the size of each bag, as a percentage of the training set size.
batch_sizeint100Set the preferred batch size for batch prediction.
break_ties_randomlybooleanfalseSet whether to break ties randomly when several attributes look equally good.
calc_out_of_bagbooleanfalseSet whether to calculate the out-of-bag error.
compute_attribute_importancebooleanfalseSet whether compute and output attribute importance (mean impurity decrease method)
do_not_check_capabilitiesbooleanfalseEnable capability-check.
max_depthint0Set the maximum depth of the tree, 0 for unlimited.
num_decimal_placesint2Set the number of decimal places.
num_execution_slotsint1Set the  number of execution slots.
num_featuresint0Set the  number of attributes to randomly investigate.
num_iterationsint100Set the number of iterations.
seedint1Set the seed for random number generator.
store_out_of_bag_predictionsbooleanfalseSet whether to store out-of-bag predictions in internal evaluation object.


Heating Load Prediction – Cross Validation

This pipeline demonstrates a typical cross validation exercise for a dataset before a model is trained to prediction the target field. The dataset is a record of various aspects of a building. The building's required heating load depends upon each of these aspects. The cross validation is to validate the model's ability to predict this heating load.

Download this pipeline.

 Understanding the pipeline


The input is generated by the CSV Generator Snap and is composed of the following fields:

  • Relative Compactness
  • Surface Area
  • Wall Area
  • Roof Area
  • Overall Height
  • Orientation
  • Glazing Area
  • Glazing Area Distribution
  • Heating Load

This dataset has been sourced fromUCI Dataset Archive.


Use Cross Validator (Regression) Snap to evaluate how each ML algorithm performs in this dataset.

Data Preparation

This input document is passed through the Type Converter Snap that is configured to automatically detect and convert the data types. In any ML pipeline, you must first analyze the input document using the Profile Snap and the Type Inspector Snap to ensure that there are no null values or that the data types are accurate. This step is skipped in this example for simplicity's sake.

Below is a preview of the output from the Type Converter Snap:

Cross Validation

After preparing the data, the first thing to do is K-fold Cross Validation. Cross Validator (Regression) Snap takes the full dataset and randomly splits the dataset into training set and test set which are used to evaluate the selected ML algorithm.

Below is the configuration of the Cross Validator (Regression) Snap:

The output from this Snap is as shown below:

Optionally, you can write the output from the Cross Validator (Regression) Snap into a file using the downstream File Writer Snap.

Download this pipeline.

Additional Example

The following use case demonstrates a real-world scenario for using this Snap:


Important steps to successfully reuse Pipelines

  1. Download and import the Pipeline into SnapLogic.
  2. Configure Snap accounts as applicable.
  3. Provide Pipeline parameters as applicable.

  File Modified

File Energy_Efficiency_Cross_Validation.slp

Nov 09, 2018 by Mohammed Iqbal

Snap Pack History

 Click to view/expand

4.29 (main15993)

  • Upgraded with the latest SnapLogic Platform release.

4.28 (main14627)

  • Upgraded with the latest SnapLogic Platform release.

4.27 (427patches13948)

4.27 (main12833)

  • No updates made.

4.26 (main11181)

  • No updates made.

4.25 (main9554)

  • No updates made.

4.24 (main8556)

  • No updates made.

4.23 (main7430)

  • No updates made.

4.22 (main6403)

  • No updates made.

4.21 (snapsmrc542)

  • No updates made.

4.20 Patch mlcore8770

  • Adds the log4j dependency to the ML Core Snaps to resolve the "Could not initialize class org.apache.log4j.LogManager" error. 

4.20 (snapsmrc535)

  • No updates made.

4.19 (snapsmrc528)

  • No updates made.

4.18 (snapsmrc523)

  • No updates made.

4.17 Patch ALL7402

  • Pushed automatic rebuild of the latest version of each Snap Pack to SnapLogic UAT and Elastic servers.

4.17 (snapsmrc515)

  • New Snap: Introducing the Clustering Snap that performs exploratory data analysis to find hidden patterns or groupings in data.
  • Enhanced the AutoML Snap. You can now:
    • Select algorithms to derive the top models.
    • Input the best model generated by another AutoML Snap from a previous execution.
    • View an interactive HTML report that contains statistics of up to 10 models.
  • Added the Snap Execution field to all Standard-mode Snaps. In some Snaps, this field replaces the existing Execute during preview check box.

4.16 (snapsmrc508)

  • New Snap: Introducing the AutoML Snap, which lets you automate the process of selecting machine learning algorithms and tuning hyperparameters. This Snap gives the best predictive model within the specified time limit.

4.15 (snapsmrc500)

  • New Snap Pack. Perform data modeling operations such as model training, cross-validation, and model-based predictions. Additionally, you can also execute Python scripts remotely. Snaps in this Snap Pack are: 
    • Cross Validator -- Classification
    • Cross Validator -- Regression
    • Predictor -- Classification
    • Predictor -- Regression
    • Remote Python Script
    • Trainer -- Classification
    • Trainer -- Regression
  • Releases the Remote Python Executor account and the Remote Python Executor Dynamic account for the Remote Python Script Snap.