# `Instance`

### *class* capymoa.core.Instance[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/core/_instance.py#L66)

Bases: [`object`](https://docs.python.org/3/builtins/functions.html#object)

An instance is a single data point in a stream. It contains a feature vector
and a schema that describes the datastream it belongs to.

In supervised learning, your more likely to encounter [`LabeledInstance`](capymoa.core.LabeledInstance.md#capymoa.core.LabeledInstance)
or [`RegressionInstance`](capymoa.core.RegressionInstance.md#capymoa.core.RegressionInstance) which are subclasses of [`Instance`](#capymoa.core.Instance) with
a class label or target value respectively.

#### \_\_init_\_(schema: [Schema](capymoa.stream.Schema.md#capymoa.stream.Schema), instance: InstanceExample | [ndarray](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray)[[tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[Any](https://docs.python.org/3/library/typing.html#typing.Any), ...], [dtype](https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype)[float64]]) → [None](https://docs.python.org/3/builtins/constants.html#None)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/core/_instance.py#L75)

Creates a new instance.

Its recommended that you prefer using [`from_array()`](#capymoa.core.Instance.from_array) or
[`from_java_instance()`](#capymoa.core.Instance.from_java_instance) to create instances, as they provide a more
user-friendly interface.

* **Parameters:**
  * **schema** – A schema that describes the datastream the instance belongs to.
  * **instance** – A vector of features (float values) or a Java instance.
* **Raises:**
  [**TypeError**](https://docs.python.org/3/builtins/exceptions.html#TypeError) – If the given instance type is of an unsupported type.

#### *classmethod* from_array(schema: [Schema](capymoa.stream.Schema.md#capymoa.stream.Schema), instance: [ndarray](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray)[[tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[Any](https://docs.python.org/3/library/typing.html#typing.Any), ...], [dtype](https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype)[float64]]) → [Instance](#capymoa.core.Instance)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/core/_instance.py#L105)

A class constructor to create an instance from a schema and a vector of features.

This is useful in the rare cases you need to create custom unlabeled instances
from scratch. In most cases, your datastream will automatically create
instances for you.

```pycon
>>> from capymoa.stream import Schema
...
>>> from capymoa.core import Instance
>>> import numpy as np
>>> schema = Schema.from_custom(["f1", "f2", "target"], "target")
>>> x = np.array([0.1, 0.2])
>>> instance = Instance.from_array(schema, x)
>>> instance
Instance(
    Schema(unnamed),
    x=[0.1 0.2],
)
```

* **Parameters:**
  * **schema** – A schema that describes the datastream the instance belongs to.
  * **instance** – A vector ([`numpy.ndarray`](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray)) of features (float values
* **Returns:**
  A new [`Instance`](#capymoa.core.Instance) object

#### *classmethod* from_csv_row(schema: [Schema](capymoa.stream.Schema.md#capymoa.stream.Schema), row: [Sequence](https://docs.python.org/3/library/collections.abc.html#collections.abc.Sequence)[[str](https://docs.python.org/3/builtins/stdtypes.html#str)]) → [Instance](#capymoa.core.Instance)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/core/_instance.py#L132)

Create an instance from a CSV row.

```pycon
>>> from capymoa.stream import Schema
>>> from capymoa.core import Instance
>>> schema = Schema.from_custom(
...     ["feature1", "feature2", "target"],
...     target="target",
...     categories={"feature2": ["A", "B"], "target": ["yes", "no"]},
...     name="classification-example"
... )
>>> row = ["1.0", "A", "yes"]
>>> instance = Instance.from_csv_row(schema, row)
>>> instance
Instance(
    Schema(classification-example),
    x=[1. 0.],
)
>>> instance.x
array([1., 0.])
```

* **Parameters:**
  * **schema** – A schema providing the structure of each row. Like the header of the CSV.
  * **row** – A sequence of strings representing a CSV row.
* **Raises:**
  [**ValueError**](https://docs.python.org/3/builtins/exceptions.html#ValueError) – If an attribute type is unsupported.
* **Returns:**
  A new [`Instance`](#capymoa.core.Instance) object.

#### *classmethod* from_java_instance(schema: [Schema](capymoa.stream.Schema.md#capymoa.stream.Schema), java_instance: InstanceExample) → [Instance](#capymoa.core.Instance)[[source]](https://github.com/adaptive-machine-learning/CapyMOA/blob/3e255b1/src/capymoa/core/_instance.py#L99)

#### *property* java_instance *: InstanceExample*

Returns a representation of the instance in Java for use in MOA. This
method is for advanced users who want to directly interact with MOA’s Java
API.

#### *property* schema *: [Schema](capymoa.stream.Schema.md#capymoa.stream.Schema)*

Returns the schema of the instance and the stream it belongs to.

#### *property* x *: [ndarray](https://numpy.org/doc/stable/reference/generated/numpy.ndarray.html#numpy.ndarray)[[tuple](https://docs.python.org/3/builtins/stdtypes.html#tuple)[[Any](https://docs.python.org/3/library/typing.html#typing.Any), ...], [dtype](https://numpy.org/doc/stable/reference/generated/numpy.dtype.html#numpy.dtype)[float64]]*

Returns a feature vector containing float values for the instance.

* NaN values indicate missing features.
