# `FIMTDD`

### *class* capymoa.regressor.FIMTDD[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/regressor/_fimtdd.py#L11)

Bases: [`MOARegressor`](capymoa.base.MOARegressor.md#capymoa.base.MOARegressor)

Implementation of the FIMT-DD tree as described by Ikonomovska et al.

Fast Incremental Model Tree with Drift Detection is the regression version
for the famous Hoeffding Tree for data stream learning.

FIMT-DD is implemented in MOA (Massive Online Analysis) and provides several
parameters for customization.

Reference:

[Ikonomovska, Elena, João Gama, and Sašo Džeroski.
Learning model trees from evolving data streams.
Data mining and knowledge discovery 23.1 (2011): 128-168.](https://repositorio.inesctec.pt/server/api/core/bitstreams/a0802a15-84a2-493b-885b-a4f9fc4060b7/content)

Example usage:

```pycon
>>> from capymoa.datasets import Fried
    >>> from capymoa.regressor import FIMTDD
    >>> from capymoa.evaluation import prequential_evaluation
>>> stream = Fried()
>>> schema = stream.get_schema()
>>> learner = FIMTDD(schema)
>>> results = prequential_evaluation(stream, learner, max_instances=1000)
>>> results["cumulative"].rmse()
7.363273627701553
```

#### \_\_init_\_(schema: [Schema](capymoa.stream.Schema.md#capymoa.stream.Schema), split_criterion: [SplitCriterion](capymoa.core.moa.splitcriteria.SplitCriterion.md#capymoa.core.moa.splitcriteria.SplitCriterion) | [str](https://docs.python.org/3/builtins/stdtypes.html#str) = 'VarianceReductionSplitCriterion', grace_period: [int](https://docs.python.org/3/builtins/functions.html#int) = 200, split_confidence: [float](https://docs.python.org/3/builtins/functions.html#float) = 1.0e-7, tie_threshold: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.05, page_hinckley_alpha: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.005, page_hinckley_threshold: [int](https://docs.python.org/3/builtins/functions.html#int) = 50, alternate_tree_fading_factor: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.995, alternate_tree_t_min: [int](https://docs.python.org/3/builtins/functions.html#int) = 150, alternate_tree_time: [int](https://docs.python.org/3/builtins/functions.html#int) = 1500, regression_tree: [bool](https://docs.python.org/3/builtins/functions.html#bool) = False, learning_ratio: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.02, learning_ratio_decay_factor: [float](https://docs.python.org/3/builtins/functions.html#float) = 0.001, learning_ratio_const: [bool](https://docs.python.org/3/builtins/functions.html#bool) = False, random_seed: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None) → [None](https://docs.python.org/3/builtins/constants.html#None)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/regressor/_fimtdd.py#L40)

Construct FIMTDD.

* **Parameters:**
  * **split_criterion** – Split criterion to use.
  * **grace_period** – Number of instances a leaf should observe between split attempts.
  * **split_confidence** – Allowed error in split decision, values close to 0 will take long to decide.
  * **tie_threshold** – Threshold below which a split will be forced to break ties.
  * **page_hinckley_alpha** – Alpha value to use in the Page Hinckley change detection tests.
  * **page_hinckley_threshold** – Threshold value used in the Page Hinckley change detection tests.
  * **alternate_tree_fading_factor** – Fading factor used to decide if an alternate tree should replace an original.
  * **alternate_tree_t_min** – Tmin value used to decide if an alternate tree should replace an original.
  * **alternate_tree_time** – The number of instances used to decide if an alternate tree should be discarded.
  * **regression_tree** – Build a regression tree instead of a model tree.
  * **learning_ratio** – Learning ratio to used for training the Perceptrons in the leaves.
  * **learning_ratio_decay_factor** – Learning rate decay factor (not used when learning rate is constant).
  * **learning_ratio_const** – Keep learning rate constant instead of decaying.

#### cli_help()[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/base/_regressor.py#L53)

#### *classmethod* from_params(schema: [Any](https://docs.python.org/3/library/typing.html#typing.Any) = None, params: [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)] | [None](https://docs.python.org/3/builtins/constants.html#None) = None, random_seed: [int](https://docs.python.org/3/builtins/functions.html#int) = 1) → [Any](https://docs.python.org/3/library/typing.html#typing.Any)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/base/_learner_params.py#L170)

Construct an instance from parameters produced by `get_params`.

#### get_params() → [dict](https://docs.python.org/3/builtins/stdtypes.html#dict)[[str](https://docs.python.org/3/builtins/stdtypes.html#str), [Any](https://docs.python.org/3/library/typing.html#typing.Any)][[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/base/_learner_params.py#L163)

Return the hyper-parameters captured from the constructor.

#### predict(instance)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/base/_regressor.py#L59)

#### train(instance)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/base/_regressor.py#L56)
