A decision tree regressor.
    Syntax
      parameters = dtrfit(X,y)
      parameters = dtrfit(X,y,options)
    Inputs
      
      
        
          - X
 
          - Training data.
 
          - Type: double
 
          - Dimension: vector | matrix
 
        
        
          - y
 
          - Target values.
 
          - Type: double
 
          - Dimension: vector | matrix
 
        
		
          - options
 
          - Type: struct
 
          - 
            
              
                - criterion
 
                - Function to measure quality of a split. 'mse' (default): mean squared error, 'friedman_mse': mean squared error with Friedman's improvement score for potential splits, 'mae': mean absolute error.
 
                - Type: char
 
				- Dimension: string
 
              
			  
                - splitter
 
                - Strategy used to choose the split at each node. 'best' (default): chooses best split, 'random': chooses random split.
 
                - Type: char
 
				- Dimension: string
 
              
			  
                - max_depth
 
                - The maximum depth of the tree. If not assigned, nodes are expanded until all leaves are pure or until all leaves contain less than min_samples_split.
 
                - Type: integer
 
				- Dimension: scalar
 
              
			  
                - min_samples_split
 
                - The minimum number of samples required to split an internal node (default: 2). If integer, consider it as the minimum number. If float: (min_samples_split * n_samples) is taken as the minimum number of samples for each split.
 
                - Type: double | integer
 
				- Dimension: scalar
 
              
			  
                - min_samples_leaf
 
                - The minimum number of samples required to be at a leaf node (default: 1). If number of samples are less than min_samples_leaf  at any node, tree is not built further under that node. If integer: consider it as the minimum number. If float: (min_samples_leaf * number of samples) is taken as the minimum number of samples for each node.
 
                - Type: double | integer
 
				- Dimension: scalar
 
              
			  
                - min_weight_fraction_leaf
 
                - The minimum weighted fraction of the sum total of weights (of all the input samples) required to be at a leaf node (default: 0).
 
                - Type: double
 
				- Dimension: scalar
 
              
			  
                - max_features
 
                - The number of features to consider when looking for the best split (default: number of features in training data). If integer: At each split, consider max_features. If float: At each split, consider floor(max_features * n_features).
 
                - Type: double | integer
 
				- Dimension: scalar
 
              
			  
                - random_state
 
                - Controls the randomness of the model. At each split, features are randomly permuted. random_state is the seed used by the random number generator.
 
                - Type: integer
 
				- Dimension: scalar
 
              
			  
                - max_leaf_nodes
 
                - Grow a tree with max_leaf_nodes in best-first fashion. Best nodes are defined by its reduction in impurity. If not assigned, then unlimited number of leaf nodes.
 
                - Type: integer
 
				- Dimension: scalar
 
              
			  
                - min_impurity_decrease
 
                - A node will be split if this split reduces the impurity >= this value (default: 0).
 
                - Type: double
 
				- Dimension: scalar
 
              
            
           
        
      
      
    
    Outputs
      
      
        
          - parameters
 
          - Contains all the values passed to dtrfit method as options. Additionally it has below key-value pairs.
 
		  - Type: struct
 
		  - 
            
              
                - scorer
 
                - Function handle pointing to r2 function (R2 Coefficient of Determination).
 
                - Type: function handle
 
              
			  
                - n_samples
 
                - Number of rows in the training data.
 
                - Type: integer
 
				- Dimension: scalar
 
              
			  
                - n_features
 
                - Number of columns in the training data.
 
                - Type: integer
 
				- Dimension: scalar
 
              
            
           
        
      
      
    
    Example
      
      Usage of dtrfit with options
      X = [1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15; 16 17 18; 19 20 21];
y = [1, 2, 3, 4, 5, 6, 7];
options = struct;
options.random_state = 3; options.criterion = 'mae';
parameters = dtrfit(X, y, options);
      parameters = struct [
  criterion: mae
  min_impurity_decrease: 0
  min_samples_leaf: 1
  min_samples_split: 2
  min_weight_fraction_leaf: 0
  model_name: model_1635312674663063
  n_features: 3
  n_samples: 7
  random_state: 3
  scorer: @r2
  splitter: best
]
	  
    
	Comments
      
      It performs regression by constructing a Decision Tree. Once the tree construction is over, it can be used for prediction using dtrpredict method.	Output 'parameters' can be passed to dtrpredict function.