# Filtering (Filter)¶

Filtering removes or reduces some unwanted components (such as noise) from an observation sequence according to some window size and one of two methods: median and mean filtering.

Suppose we have an observation sequence $$\mathbf{o}^{(1)}\mathbf{o}^{(2)}\ldots\mathbf{o}^{(T)}$$ and we are filtering with a window size of $$n$$. Filtering replaces every observation $$\mathbf{o}^{(t)}$$ with either the mean or median of the window of observations of size $$n$$ containing $$\mathbf{o}^{(t)}$$ in its centre.

• For median filtering: $$\mathbf{o}^{(t)\prime}=\mathrm{med}\underbrace{\left[\ldots, \mathbf{o}^{(t-1)}, \mathbf{o}^{(t)}, \mathbf{o}^{(t+1)}, \ldots\right]}_n$$

• For mean filtering: $$\mathbf{o}^{(t)\prime}=\mathrm{mean}\underbrace{\left[\ldots, \mathbf{o}^{(t-1)}, \mathbf{o}^{(t)}, \mathbf{o}^{(t+1)}, \ldots\right]}_n$$

## API reference¶

class sequentia.preprocessing.Filter(window_size, method='median')[source]

Applies a median or mean filter to the input observation sequence(s).

Parameters
window_size: int > 0

The size of the filtering window.

method: {‘median’, ‘mean’}

The filtering method.

Examples

>>> # Create some sample data
>>> X = [np.random.random((10 * i, 3)) for i in range(1, 4)]
>>> # Filter the data with window size 5 and median filtering
>>> X = Filter(window_size=5, method='median')(X)

transform(x)[source]

Applies the transformation to a single observation sequence.

Parameters
X: numpy.ndarray (float)

An individual observation sequence.

Returns
transformed: numpy.ndarray (float)

The transformed input observation sequence.

__call__(X, validate=True)

Applies the transformation to the observation sequence(s).

Parameters
X: numpy.ndarray (float) or list of numpy.ndarray (float)

An individual observation sequence or a list of multiple observation sequences.

validate: bool

Whether or not to validate the input sequences.

Returns
transformed: numpy.ndarray (float) or list of numpy.ndarray (float)

The transformed input observation sequence(s).