# `IForestASD`

### *class* capymoa.anomaly.IForestASD[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/anomaly/_iforest_asd.py#L144)

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

iForestASD

Reference:
Ding, Z., & Fei, M. (2013). An anomaly detection approach based on isolation
forest algorithm for streaming data using sliding window. IFAC proceedings
volumes, 46(20), 12-17.

Example:
>>> from capymoa.anomaly.datasets import TinyBlobs
>>> from capymoa.anomaly import IForestASD
>>> from capymoa.evaluation import AnomalyDetectionEvaluator
>>> stream = TinyBlobs()
>>> schema = stream.get_schema()
>>> learner = IForestASD(schema, window_size=256, n_trees=100,
…                      sample_size=64, random_state=42)
>>> evaluator = AnomalyDetectionEvaluator(schema)
>>> while stream.has_more_instances():
…     instance = stream.next_instance()
…     proba = learner.score_instance(instance)
…     evaluator.update(instance.y_index, proba)
…     learner.train(instance)
>>> auc = evaluator.auc()
>>> print(f”AUC: {auc:.2f}”)
AUC: 0.96

TODO: implement concept drift method

#### \_\_init_\_(schema: [Schema](capymoa.stream.Schema.md#capymoa.stream.Schema), window_size: [int](https://docs.python.org/3/builtins/functions.html#int) = 2048, n_trees: [int](https://docs.python.org/3/builtins/functions.html#int) = 100, sample_size: [int](https://docs.python.org/3/builtins/functions.html#int) = 256, height_limit: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None, random_state: [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None) = None)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/anomaly/_iforest_asd.py#L173)

Initialize the IForestASD anomaly detector.
:param schema: The schema of the data stream.
:param window_size: The size of the sliding window to maintain.
:param n_trees: The number of isolation trees to build.
:param sample_size: The number of instances to sample for each tree.
:param height_limit: The maximum height of the isolation trees. If None, it will be set to ceil(log2(sample_size)).
:param random_state: The seed for the random number generator.

#### *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) → [int](https://docs.python.org/3/builtins/functions.html#int) | [None](https://docs.python.org/3/builtins/constants.html#None)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/anomaly/_iforest_asd.py#L247)

Predict is not implemented for anomaly detection.

* **Parameters:**
  **instance** – The instance to predict.
* **Raises:**
  [**NotImplementedError**](https://docs.python.org/3/builtins/exceptions.html#NotImplementedError) – This method is not applicable for anomaly detection.

#### score_instance(instance: [Instance](capymoa.core.Instance.md#capymoa.core.Instance)) → [float](https://docs.python.org/3/builtins/functions.html#float)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/anomaly/_iforest_asd.py#L202)

Calculate the anomaly score for an instance.

A high score is indicative of an anomaly.

* **Parameters:**
  **instance** – The instance to score.
* **Returns:**
  The anomaly score between 0 and 1.

#### train(instance: [Instance](capymoa.core.Instance.md#capymoa.core.Instance))[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/anomaly/_iforest_asd.py#L224)
