from sklearn.pipeline import _name_estimators, Pipeline as _Pipeline
from sklearn.utils.metaestimators import if_delegate_has_method
__all__ = ['make_pipeline', 'Pipeline']
[docs]def make_pipeline(*steps):
"""Construct a Pipeline from the given estimators. This is a shorthand for
the Pipeline constructor; it does not require, and does not permit, naming
the estimators. Instead, their names will be set to the lowercase of their
types automatically.
Parameters
----------
*steps : list
List of estimators.
Returns
-------
p : Pipeline
"""
return Pipeline(_name_estimators(steps))
[docs]class Pipeline(_Pipeline):
"""Pipeline of transforms with a final estimator.
Parameters
----------
steps : list
List of (name, transform) tuples (implementing fit/transform) that are
chained, in the order in which they are chained, with the last object
an estimator.
memory : instance of joblib.Memory or string, default None
Used to cache the fitted transformers of the pipeline. By default, no
caching is performed. If a string is given, it is the path to the
caching directory. Enabling caching triggers a clone of the
transformers before fitting. Therefore, the transformer instance given
to the pipeline cannot be inspected directly. Use the attribute
``named_steps`` or ``steps`` to inspect estimators within the pipeline.
Caching the transformers is advantageous when fitting is time
consuming.
Attributes
----------
named_steps : dict
Read-only attribute to access any step parameter by user given name.
Keys are step names and values are steps parameters.
"""
def __len__(self):
return len(self.named_steps)
def __getitem__(self, key):
return self.named_steps[key]
def __iter__(self):
return iter(self.named_steps)
def _pre_transform(self, X):
for _, transform in self.steps[:-1]:
if transform is not None:
X = transform.transform(X)
return X
[docs] @if_delegate_has_method(delegate='_final_estimator')
def anomaly_score(self, X, normalize=False):
"""Apply transforms, and compute the anomaly score for each sample with
the final estimator.
Parameters
----------
X : array-like of shape (n_samples, n_features)
Data.
normalize : bool, default False
If True, return the normalized anomaly score.
Returns
-------
anomaly_score : array-like of shape (n_samples,)
Anomaly score for each sample.
"""
return self._final_estimator.anomaly_score(
self._pre_transform(X), normalize=normalize
)
[docs] @if_delegate_has_method(delegate='_final_estimator')
def featurewise_anomaly_score(self, X):
"""Apply transforms, and compute the feature-wise anomaly scores for
each sample with the final estimator.
Parameters
----------
X : array-like of shape (n_samples, n_features)
Data.
Returns
-------
anomaly_score : array-like of shape (n_samples, n_features)
Feature-wise anomaly scores for each sample.
Raises
------
ValueError
"""
return self._final_estimator.featurewise_anomaly_score(
self._pre_transform(X)
)
[docs] @if_delegate_has_method(delegate='_final_estimator')
def plot_anomaly_score(self, X, **kwargs):
"""Apply transoforms, and plot the anomaly score for each sample with
the final estimator.
Parameters
----------
X : array-like of shape (n_samples, n_features)
Data.
ax : matplotlib Axes, default None
Target axes instance.
bins : int, str or array-like, default 'auto'
Number of hist bins.
figsize : tuple, default None
Tuple denoting figure size of the plot.
filename : str, default None
If provided, save the current figure.
hist : bool, default True
If True, plot a histogram of anomaly scores.
kde : bool, default True
If True, plot a gaussian kernel density estimate.
title : string, default None
Axes title. To disable, pass None.
xlabel : string, default 'Samples'
X axis title label. To disable, pass None.
xlim : tuple, default None
Tuple passed to `ax.xlim`.
ylabel : string, default 'Anomaly score'
Y axis title label. To disable, pass None.
ylim : tuple, default None
Tuple passed to `ax.ylim`.
**kwargs : dict
Other keywords passed to `ax.plot`.
Returns
-------
ax : matplotlib Axes
Axes on which the plot was drawn.
"""
kwargs['X'] = self._pre_transform(X)
return self._final_estimator.plot_anomaly_score(**kwargs)
[docs] @if_delegate_has_method(delegate='_final_estimator')
def plot_roc_curve(self, X, y, **kwargs):
"""Apply transoforms, and plot the Receiver Operating Characteristic
(ROC) curve with the final estimator.
Parameters
----------
X : array-like of shape (n_samples, n_features)
Data.
y : array-like of shape (n_samples,)
Labels.
ax : matplotlib Axes, default None
Target axes instance.
figsize: tuple, default None
Tuple denoting figure size of the plot.
filename : str, default None
If provided, save the current figure.
title : string, default 'ROC curve'
Axes title. To disable, pass None.
xlabel : string, default 'FPR'
X axis title label. To disable, pass None.
ylabel : string, default 'TPR'
Y axis title label. To disable, pass None.
**kwargs : dict
Other keywords passed to `ax.plot`.
Returns
-------
ax : matplotlib Axes
Axes on which the plot was drawn.
"""
kwargs['X'] = self._pre_transform(X)
kwargs['y'] = y
return self._final_estimator.plot_roc_curve(**kwargs)
@property
def plot_graphical_model(self):
"""Apply transforms, and plot the Gaussian Graphical Model (GGM) with
the final estimator.
Parameters
----------
ax : matplotlib Axes, default None
Target axes instance.
figsize : tuple, default None
Tuple denoting figure size of the plot.
filename : str, default None
If provided, save the current figure.
random_state : int, RandomState instance, default None
Seed of the pseudo random number generator.
title : string, default 'GGM (n_clusters, n_features, n_isolates)'
Axes title. To disable, pass None.
**kwargs : dict
Other keywords passed to `nx.draw_networkx`.
Returns
-------
ax : matplotlib Axes
Axes on which the plot was drawn.
"""
return self._final_estimator.plot_graphical_model
@property
def plot_partial_corrcoef(self):
"""Apply transforms, and plot the partial correlation coefficient
matrix with the final estimator.
Parameters
----------
ax : matplotlib Axes, default None
Target axes instance.
cbar : bool, default True.
Whether to draw a colorbar.
figsize : tuple, default None
Tuple denoting figure size of the plot.
filename : str, default None
If provided, save the current figure.
title : string, default 'Partial correlation'
Axes title. To disable, pass None.
**kwargs : dict
Other keywords passed to `ax.pcolormesh`.
Returns
-------
ax : matplotlib Axes
Axes on which the plot was drawn.
"""
return self._final_estimator.plot_partial_corrcoef