code: @Override
      protected void _fit(Dataframe trainingData) {
          ModelParameters modelParameters = knowledgeBase.getModelParameters();
          Map<Object, Double> minColumnValues = modelParameters.getMinColumnValues();
          Map<Object, Double> maxColumnValues = modelParameters.getMaxColumnValues();
          boolean scaleResponse = knowledgeBase.getTrainingParameters().getScaleResponse();
  
          Set<TypeInference.DataType> supportedXDataTypes = getSupportedXDataTypes();
          Stream<Object> transformedColumns = trainingData.getXDataTypes().entrySet().stream()
                  .filter(e -> supportedXDataTypes.contains(e.getValue()))
                  .map(e -> e.getKey());
  
          streamExecutor.forEach(StreamMethods.stream(transformedColumns, isParallelized()), column -> {
              FlatDataCollection columnValues = trainingData.getXColumn(column).toFlatDataCollection();
  
              minColumnValues.put(column, Descriptives.min(columnValues));
              maxColumnValues.put(column, Descriptives.max(columnValues));
          });
  
          if(scaleResponse && trainingData.getYDataType() == TypeInference.DataType.NUMERICAL) {
              FlatDataCollection columnValues = trainingData.getYColumn().toFlatDataCollection();
  
              minColumnValues.put(Dataframe.COLUMN_NAME_Y, Descriptives.min(columnValues));
              maxColumnValues.put(Dataframe.COLUMN_NAME_Y, Descriptives.max(columnValues));
          }
      }
docs: {@inheritDoc}