skmultiflow.data.SineGenerator

class skmultiflow.data.SineGenerator(classification_function=0, random_state=None, balance_classes=False, has_noise=False)[source]

Sine stream generator.

This generator is an implementation of the dara stream with abrupt concept drift, as described in Gama, Joao, et al [1].

It generates up to 4 relevant numerical attributes, that vary from 0 to 1, where only 2 of them are relevant to the classification task and the other 2 are added by request of the user. A classification function is chosen among four possible ones:

  1. SINE1. Abrupt concept drift, noise-free examples. It has two relevant attributes. Each attributes has values uniformly distributed in [0; 1]. In the first context all points below the curve \(y = sin(x)\) are classified as positive.

  2. Reversed SINE1. The reversed classification of SINE1.

  3. SINE2. The same two relevant attributes. The classification function is \(y < 0.5 + 0.3 sin(3 \pi x)\).

  4. Reversed SINE2. The reversed classification of SINE2.

Concept drift can be introduced by changing the classification function. This can be done manually or using ConceptDriftStream.

Two important features are the possibility to balance classes, which means the class distribution will tend to a uniform one, and the possibility to add noise, which will, add two non relevant attributes.

Parameters
classification_function: int (Default: 0)

Which of the four classification functions to use for the generation. From 0 to 3.

random_state: int, RandomState instance or None, optional (default=None)

If int, random_state is the seed used by the random number generator; If RandomState instance, random_state is the random number generator; If None, the random number generator is the RandomState instance used by np.random.

balance_classes: bool (Default: False)

Whether to balance classes or not. If balanced, the class distribution will converge to a uniform distribution.

has_noise: bool (Default: False)

Adds 2 non relevant features to the stream.

References

1

Gama, Joao, et al.’s ‘Learning with drift detection.’ Advances in artificial intelligence–SBIA 2004. Springer Berlin Heidelberg, 2004. 286-295.”

Examples

>>> # Imports
>>> from skmultiflow.data.sine_generator import SineGenerator
>>> # Setting up the stream
>>> stream = SineGenerator(classification_function = 2, random_state = 112,
...  balance_classes = False, has_noise = True)
>>> # Retrieving one sample
>>> stream.next_sample()
(array([[0.37505713, 0.64030462, 0.95001658, 0.0756772 ]]), array([1.]))
>>> stream.next_sample(10)
(array([[0.77692966, 0.83274576, 0.05480574, 0.81767738],
   [0.88535146, 0.72234651, 0.00255603, 0.98119928],
   [0.34341985, 0.09475989, 0.39464259, 0.00494492],
   [0.73670683, 0.95580687, 0.82060937, 0.344983  ],
   [0.37854446, 0.78476361, 0.08623151, 0.54607394],
   [0.16222602, 0.29006973, 0.04500817, 0.33218776],
   [0.73653322, 0.83921149, 0.70936161, 0.18840112],
   [0.98566856, 0.38800331, 0.50315448, 0.76353033],
   [0.68373245, 0.72195738, 0.21415209, 0.76309258],
   [0.07521616, 0.6108907 , 0.42563042, 0.23435109]]),
   array([1., 0., 1., 0., 1., 1., 1., 0., 0., 1.]))
>>> stream.n_remaining_samples()
-1
>>> stream.has_more_samples()
True

Methods

generate_drift(self)

Generate drift by switching the classification function randomly.

get_data_info(self)

Retrieves minimum information from the stream

get_info(self)

Collects and returns the information about the configuration of the estimator

get_params(self[, deep])

Get parameters for this estimator.

has_more_samples(self)

Checks if stream has more samples.

is_restartable(self)

Determine if the stream is restartable.

last_sample(self)

Retrieves last batch_size samples in the stream.

n_remaining_samples(self)

Returns the estimated number of remaining samples.

next_sample(self[, batch_size])

Returns next sample from the stream.

prepare_for_use()

Prepare the stream for use.

reset(self)

Resets the estimator to its initial state.

restart(self)

Restart the stream.

set_params(self, **params)

Set the parameters of this estimator.

Attributes

balance_classes

Retrieve the value of the option: Balance classes

classification_function

Retrieve the index of the current classification function.

feature_names

Retrieve the names of the features.

has_noise

Retrieve the value of the option: add noise.

n_cat_features

Retrieve the number of integer features.

n_features

Retrieve the number of features.

n_num_features

Retrieve the number of numerical features.

n_targets

Retrieve the number of targets

target_names

Retrieve the names of the targets

target_values

Retrieve all target_values in the stream for each target.

property balance_classes

Retrieve the value of the option: Balance classes

Returns
Boolean

True is the classes are balanced

property classification_function

Retrieve the index of the current classification function.

Returns
int

index of the classification function [0,1,2,3]

property feature_names

Retrieve the names of the features.

Returns
list

names of the features

generate_drift(self)[source]

Generate drift by switching the classification function randomly.

get_data_info(self)[source]

Retrieves minimum information from the stream

Used by evaluator methods to id the stream.

The default format is: ‘Stream name - n_targets, n_classes, n_features’.

Returns
string

Stream data information

get_info(self)[source]

Collects and returns the information about the configuration of the estimator

Returns
string

Configuration of the estimator.

get_params(self, deep=True)[source]

Get parameters for this estimator.

Parameters
deepboolean, optional

If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns
paramsmapping of string to any

Parameter names mapped to their values.

has_more_samples(self)[source]

Checks if stream has more samples.

Returns
Boolean

True if stream has more samples.

property has_noise

Retrieve the value of the option: add noise.

Returns
Boolean

True is the noise is added

is_restartable(self)[source]

Determine if the stream is restartable.

Returns
Bool

True if stream is restartable.

last_sample(self)[source]

Retrieves last batch_size samples in the stream.

Returns
tuple or tuple list

A numpy.ndarray of shape (batch_size, n_features) and an array-like of shape (batch_size, n_targets), representing the next batch_size samples.

property n_cat_features

Retrieve the number of integer features.

Returns
int

The number of integer features in the stream.

property n_features

Retrieve the number of features.

Returns
int

The total number of features.

property n_num_features

Retrieve the number of numerical features.

Returns
int

The number of numerical features in the stream.

n_remaining_samples(self)[source]

Returns the estimated number of remaining samples.

Returns
int

Remaining number of samples. -1 if infinite (e.g. generator)

property n_targets

Retrieve the number of targets

Returns
int

the number of targets in the stream.

next_sample(self, batch_size=1)[source]

Returns next sample from the stream.

The sample generation works as follows: The two attributes are generated with the random generator, initialized with the seed passed by the user. Then, the classification function decides whether to classify the instance as class 0 or class 1. The next step is to verify if the classes should be balanced, and if so, balance the classes. The last step is to add noise, if the has_noise is True.

The generated sample will have 2 relevant features, and an additional two noise features if option chosen, and 1 label (it has one classification task).

Parameters
batch_size: int (optional, default=1)

The number of samples to return.

Returns
tuple or tuple list

Return a tuple with the features matrix and the labels matrix for the batch_size samples that were requested.

static prepare_for_use()[source]

Prepare the stream for use.

Deprecated in v0.5.0 and will be removed in v0.7.0

reset(self)[source]

Resets the estimator to its initial state.

Returns
self
restart(self)[source]

Restart the stream.

set_params(self, **params)[source]

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects (such as pipelines). The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Returns
self
property target_names

Retrieve the names of the targets

Returns
list

the names of the targets in the stream.

property target_values

Retrieve all target_values in the stream for each target.

Returns
list

list of lists of all target_values for each target