Transform features by scaling each feature to a given range.
This estimator scales and translates each feature individually such that it is in the given range on the training set, e.g. between zero and one.
The transformation is given by::
X_std = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0)) X_scaled = X_std * (max - min) + min
where min, max = feature_range.
The transformation is calculated as::
X_scaled = scale * X + min - X.min(axis=0) * scale where scale = (max - min) / (X.max(axis=0) - X.min(axis=0))
This transformation is often used as an alternative to zero mean, unit variance scaling.
Read more in the :ref:`User Guide <preprocessing_scaler>`.
Parameters ---------- feature_range : tuple (min, max), default=(0, 1) Desired range of transformed data.
copy : bool, default=True Set to False to perform inplace row normalization and avoid a copy (if the input is already a numpy array).
Attributes ---------- min_ : ndarray of shape (n_features,) Per feature adjustment for minimum. Equivalent to ``min - X.min(axis=0) * self.scale_``
scale_ : ndarray of shape (n_features,) Per feature relative scaling of the data. Equivalent to ``(max - min) / (X.max(axis=0) - X.min(axis=0))``
.. versionadded:: 0.17 *scale_* attribute.
data_min_ : ndarray of shape (n_features,) Per feature minimum seen in the data
.. versionadded:: 0.17 *data_min_*
data_max_ : ndarray of shape (n_features,) Per feature maximum seen in the data
.. versionadded:: 0.17 *data_max_*
data_range_ : ndarray of shape (n_features,) Per feature range ``(data_max_ - data_min_)`` seen in the data
.. versionadded:: 0.17 *data_range_*
n_samples_seen_ : int The number of samples processed by the estimator. It will be reset on new calls to fit, but increments across ``partial_fit`` calls.
Examples -------- >>> from sklearn.preprocessing import MinMaxScaler >>> data = [-1, 2], [-0.5, 6], [0, 10], [1, 18]
>>> scaler = MinMaxScaler() >>> print(scaler.fit(data)) MinMaxScaler() >>> print(scaler.data_max_) 1. 18.
>>> print(scaler.transform(data)) [0. 0. ]
[0.25 0.25]
[0.5 0.5 ]
[1. 1. ]
>>> print(scaler.transform([2, 2]
)) [1.5 0. ]
See also -------- minmax_scale: Equivalent function without the estimator API.
Notes ----- NaNs are treated as missing values: disregarded in fit, and maintained in transform.
For a comparison of the different scalers, transformers, and normalizers, see :ref:`examples/preprocessing/plot_all_scaling.py <sphx_glr_auto_examples_preprocessing_plot_all_scaling.py>`.