<a id="skfolio-pre-selection-dropzerovariance"></a>

# skfolio.pre_selection.DropZeroVariance

<a id="skfolio.pre_selection.DropZeroVariance"></a>

### *class* skfolio.pre_selection.DropZeroVariance(threshold=1e-08)

Transformer for dropping assets with near-zero variance.

On short windows, some assets can experience a near-zero variance, making
the covariance matrix improper for optimization. This simple transformer drops
assets whose variance is below some threshold.

* **Parameters:**
  **threshold** *float, default=1e-8*
  : Minimum variance threshold. The default value is 1e-8. For daily asset returns,
    this value filters out assets whose daily standard deviation is below 1e-4
    (0.01%), which corresponds to an annual standard deviation of approximately
    0.16%, assuming 252 trading days.
* **Attributes:**
  **to_keep_** *ndarray of shape (n_assets, )*
  : Boolean array indicating which assets are remaining.

  **n_features_in_** *int*
  : Number of assets seen during `fit`.

  **feature_names_in_** *ndarray of shape (`n_features_in_`,)*
  : Names of assets seen during `fit`. Defined only when `X`
    has assets names that are all strings.

### Methods

| [`fit`](#skfolio.pre_selection.DropZeroVariance.fit)(X[, y])                             | Fit the transformer on some assets.                     |
|------------------------------------------------------------------------------------------|---------------------------------------------------------|
| [`fit_transform`](#skfolio.pre_selection.DropZeroVariance.fit_transform)(X[, y])                   | Fit to data, then transform it.                         |
| [`get_feature_names_out`](#skfolio.pre_selection.DropZeroVariance.get_feature_names_out)([input_features]) | Mask feature names according to selected features.      |
| [`get_metadata_routing`](#skfolio.pre_selection.DropZeroVariance.get_metadata_routing)()                  | Get metadata routing of this object.                    |
| [`get_params`](#skfolio.pre_selection.DropZeroVariance.get_params)([deep])                      | Get parameters for this estimator.                      |
| [`get_support`](#skfolio.pre_selection.DropZeroVariance.get_support)([indices])                  | Get a mask, or integer index, of the features selected. |
| [`inverse_transform`](#skfolio.pre_selection.DropZeroVariance.inverse_transform)(X)                    | Reverse the transformation operation.                   |
| [`set_output`](#skfolio.pre_selection.DropZeroVariance.set_output)(\*[, transform])             | Set output container.                                   |
| [`set_params`](#skfolio.pre_selection.DropZeroVariance.set_params)(\*\*params)                  | Set the parameters of this estimator.                   |
| [`transform`](#skfolio.pre_selection.DropZeroVariance.transform)(X)                            | Reduce X to the selected features.                      |

<a id="skfolio.pre_selection.DropZeroVariance.fit"></a>

#### fit(X, y=None)

Fit the transformer on some assets.

* **Parameters:**
  **X** *array-like of shape (n_observations, n_assets)*
  : Price returns of the assets.

  **y** *Ignored*
  : Not used, present for API consistency by convention.
* **Returns:**
  **self** *DropZeroVariance*
  : Fitted estimator.

<a id="skfolio.pre_selection.DropZeroVariance.fit_transform"></a>

#### fit_transform(X, y=None, \*\*fit_params)

Fit to data, then transform it.

Fits transformer to `X` and `y` with optional parameters `fit_params`
and returns a transformed version of `X`.

* **Parameters:**
  **X** *array-like of shape (n_samples, n_features)*
  : Input samples.

  **y** *array-like of shape (n_samples,) or (n_samples, n_outputs),                 default=None*
  : Target values (None for unsupervised transformations).

  **\*\*fit_params** *dict*
  : Additional fit parameters.
    Pass only if the estimator accepts additional params in its `fit` method.
* **Returns:**
  **X_new** *ndarray array of shape (n_samples, n_features_new)*
  : Transformed array.

<a id="skfolio.pre_selection.DropZeroVariance.get_feature_names_out"></a>

#### get_feature_names_out(input_features=None)

Mask feature names according to selected features.

* **Parameters:**
  **input_features** *array-like of str or None, default=None*
  : Input features.
    - If `input_features` is `None`, then `feature_names_in_` is
      used as feature names in. If `feature_names_in_` is not defined,
      then the following input feature names are generated:
      `["x0", "x1", ..., "x(n_features_in_ - 1)"]`.
    - If `input_features` is an array-like, then `input_features` must
      match `feature_names_in_` if `feature_names_in_` is defined.
* **Returns:**
  **feature_names_out** *ndarray of str objects*
  : Transformed feature names.

<a id="skfolio.pre_selection.DropZeroVariance.get_metadata_routing"></a>

#### get_metadata_routing()

Get metadata routing of this object.

Please check [User Guide](https://skfolio.org/user_guide/metadata_routing.html.md#metadata-routing) on how the routing
mechanism works.

* **Returns:**
  **routing** *MetadataRequest*
  : A `MetadataRequest` encapsulating
    routing information.

<a id="skfolio.pre_selection.DropZeroVariance.get_params"></a>

#### get_params(deep=True)

Get parameters for this estimator.

* **Parameters:**
  **deep** *bool, default=True*
  : If True, will return the parameters for this estimator and
    contained subobjects that are estimators.
* **Returns:**
  **params** *dict*
  : Parameter names mapped to their values.

<a id="skfolio.pre_selection.DropZeroVariance.get_support"></a>

#### get_support(indices=False)

Get a mask, or integer index, of the features selected.

* **Parameters:**
  **indices** *bool, default=False*
  : If True, the return value will be an array of integers, rather
    than a boolean mask.
* **Returns:**
  **support** *array*
  : An index that selects the retained features from a feature vector.
    If `indices` is False, this is a boolean array of shape
    [# input features], in which an element is True iff its
    corresponding feature is selected for retention. If `indices` is
    True, this is an integer array of shape [# output features] whose
    values are indices into the input feature vector.

<a id="skfolio.pre_selection.DropZeroVariance.inverse_transform"></a>

#### inverse_transform(X)

Reverse the transformation operation.

* **Parameters:**
  **X** *array of shape [n_samples, n_selected_features]*
  : The input samples.
* **Returns:**
  **X_original** *array of shape [n_samples, n_original_features]*
  : `X` with columns of zeros inserted where features would have
    been removed by [`transform`](#skfolio.pre_selection.DropZeroVariance.transform).

<a id="skfolio.pre_selection.DropZeroVariance.set_output"></a>

#### set_output(\*, transform=None)

Set output container.

Refer to the user guide for more details
and sphx_glr_auto_examples_miscellaneous_plot_set_output.py for an
example on how to use the API.

* **Parameters:**
  **transform** *{“default”, “pandas”, “polars”}, default=None*
  : Configure output of `transform` and `fit_transform`.
    - `"default"`: Default output format of a transformer
    - `"pandas"`: DataFrame output
    - `"polars"`: Polars output
    - `None`: Transform configuration is unchanged
    <br/>
    #### Versionadded
    Added in version 1.4: `"polars"` option was added.
* **Returns:**
  **self** *estimator instance*
  : Estimator instance.

<a id="skfolio.pre_selection.DropZeroVariance.set_params"></a>

#### set_params(\*\*params)

Set the parameters of this estimator.

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

* **Parameters:**
  **\*\*params** *dict*
  : Estimator parameters.
* **Returns:**
  **self** *estimator instance*
  : Estimator instance.

<a id="skfolio.pre_selection.DropZeroVariance.transform"></a>

#### transform(X)

Reduce X to the selected features.

* **Parameters:**
  **X** *array of shape [n_samples, n_features]*
  : The input samples.
* **Returns:**
  **X_r** *array of shape [n_samples, n_selected_features]*
  : The input samples with only the selected features.

