# dtcfit

Decision tree classifier

## Syntax

parameters = dtcfit(X,y)

parameters = dtcfit(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. 'gini' for Gini Impurity (default) or 'entropy' for Information Gain.
Type: char
Dimension: string
splitter
Strategy used to choose the split at each node. 'best' to choose best split (default) or 'random' to choose 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
max_samples_split
The minimum number of samples required to split an internal node (default: 2). If integer, consider it as the minimum number; if double, (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 double, (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 double, 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 dtcfit method as options. Additionally it has below key-value pairs.
Type: struct
scorer
Function handle pointing to 'accuracy' function.
Type: function handle
classes
The class labels (single output problem), or a matrix of class labels (multi-output problem).
Type: double
Dimension: vector | matrix
max_features
The inferred value of max_features.
Type: integer
Dimension: scalar
feature_importances
Feature importances. The importance of a feature is computed as the (normalized) total reduction of the criterion brought by that feature. It is also known as Gini Importance.
Type: double
Dimension: n_features
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 dtcfit without options

data = dlmread('iris.csv', ',', 1);
X = data(:,1:end-1);
y = data(:,end);

parameters = dtcfit(X, y);

> parameters
parameters = struct [
classes: [Matrix] 1 x 3
0  1  2
criterion: gini
feature_importances: [Matrix] 1 x 4
0.00000  0.01333  0.06406  0.92261
max_features: 4
min_impurity_decrease: 0
min_samples_leaf: 1
min_samples_split: 2
min_weight_fraction_leaf: 0
n_features: 4
n_samples: 150
splitter: best
]