Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略

简介: Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略


目录

sklearn中的RobustScaler 函数的简介及使用方法


 

 

 

sklearn中的RobustScaler 函数的简介及使用方法

       RobustScaler 函数使用对异常值鲁棒的统计信息来缩放特征。这个标量去除中值,并根据分位数范围(默认为IQR即四分位数范围)对数据进行缩放。IQR是第1个四分位数(第25分位数)和第3个四分位数(第75分位数)之间的范围。通过计算训练集中样本的相关统计量,对每个特征分别进行定心和缩放。然后将中值和四分位范围存储起来,使用“变换”方法用于以后的数据。

       数据集的标准化是许多机器学习估计器的常见需求。这通常是通过去除平均值和缩放到单位方差来实现的。然而,异常值往往会对样本均值/方差产生负面影响。在这种情况下,中位数和四分位范围通常会给出更好的结果。

 

class RobustScaler Found at: sklearn.preprocessing._data

 

class RobustScaler(TransformerMixin, BaseEstimator):

    """Scale features using statistics that are robust to outliers.

    This Scaler removes the median and scales the data according to the quantile range (defaults to IQR: Interquartile Range).  The IQR is the range between the 1st quartile (25th quantile) and the 3rd quartile (75th quantile).

    Centering and scaling happen independently on each feature by computing the relevant statistics on the samples in the training set. Median and interquartile range are then stored to be used on later data using the ``transform`` method.

 Standardization of a dataset is a common requirement for many machine learning estimators. Typically this is done by removing the mean and scaling to unit variance. However, outliers can often influence the sample mean / variance in a negative way. In such cases, the median and the interquartile range often give better results.

    .. versionadded:: 0.17

    

    Read more in the :ref:`User Guide <preprocessing_scaler>`.

 

 

 

使用对异常值鲁棒的统计信息来缩放特征

这个标量去除中值,并根据分位数范围(默认为IQR即四分位数范围)对数据进行缩放。IQR是第1个四分位数(第25分位数)和第3个四分位数(第75分位数)之间的范围。

通过计算训练集中样本的相关统计量,对每个特征分别进行定心和缩放。然后将中值和四分位范围存储起来,使用“变换”方法用于以后的数据。

数据集的标准化是许多机器学习估计器的常见需求。这通常是通过去除平均值和缩放到单位方差来实现的。然而,异常值往往会对样本均值/方差产生负面影响。在这种情况下,中位数和四分位范围通常会给出更好的结果。

. .versionadded:: 0.17

 

更多内容见:ref: ' User Guide  '。</preprocessing_scaler>

    Parameters

    ----------

    with_centering : boolean, True by default. If True, center the data before scaling. This will cause ``transform`` to raise an exception when attempted on sparse matrices, because centering them entails building a dense matrix which in common use cases is likely to be too large to fit in memory.

    with_scaling : boolean, True by default. If True, scale the data to interquartile range. quantile_range : tuple (q_min, q_max), 0.0 < q_min < q_max <  100.0. Default: (25.0, 75.0) = (1st quantile, 3rd quantile) = IQR. Quantile range used to calculate ``scale_``.

    

    .. versionadded:: 0.18

    

    copy : boolean, optional, default is True. If False, try to avoid a copy and do inplace scaling instead. This is not guaranteed to always work inplace; e.g. if the data is not a NumPy array or scipy.sparse CSR matrix, a copy may still be returned.

    

    Attributes

    ----------

    center_ : array of floats. The median value for each feature in the training set.

    scale_ : array of floats. The (scaled) interquartile range for each feature in the training set.

参数

----------

with_centering : boolean类型,默认为True。如果为真,在缩放前将数据居中。这将导致“转换”在尝试处理稀疏矩阵时引发异常,因为围绕它们需要构建一个密集的矩阵,在常见的用例中,这个矩阵可能太大而无法装入内存。

with_scaling : boolean类型,默认为True。如果为真,将数据缩放到四分位范围。quantile_range:元组(q_min, q_max), 0.0 < q_min < q_max < 100.0。默认:(25.0,75.0)=(第1分位数,第3分位数)= IQR。用于计算' ' scale_ ' '的分位数范围。

 

. .versionadded:: 0.18

 

copy : boolean类型,可选,默认为真。如果为False,则尽量避免复制,而改为就地缩放。这并不能保证总是有效的;例如,如果数据不是一个NumPy数组或scipy。稀疏CSR矩阵,仍可返回副本。

 

属性

----------

center_ : 浮点数数组。训练集中每个特征的中值。

scale_ :浮点数数组。训练集中每个特征的(缩放的)四分位范围。

    .. versionadded:: 0.17

    *scale_* attribute.

    

    Examples

    --------

    >>> from sklearn.preprocessing import RobustScaler

    >>> X = [[ 1., -2.,  2.],

    ...      [ -2.,  1.,  3.],

    ...      [ 4.,  1., -2.]]

    >>> transformer = RobustScaler().fit(X)

    >>> transformer

    RobustScaler()

    >>> transformer.transform(X)

    array([[ 0. , -2. ,  0. ],

    [-1. ,  0. ,  0.4],

    [ 1. ,  0. , -1.6]])

    

    See also

    --------

    robust_scale: Equivalent function without the estimator API.

    :class:`sklearn.decomposition.PCA`

    Further removes the linear correlation across features with

    'whiten=True'.

 

    Notes

    -----

    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>`.

    

    https://en.wikipedia.org/wiki/Median

    https://en.wikipedia.org/wiki/Interquartile_range

    """

    @_deprecate_positional_args

    def __init__(self, *, with_centering=True, with_scaling=True,

        quantile_range=(25.0, 75.0), copy=True):

        self.with_centering = with_centering

        self.with_scaling = with_scaling

        self.quantile_range = quantile_range

        self.copy = copy

    

    def fit(self, X, y=None):

        """Compute the median and quantiles to be used for scaling.

 

        Parameters

        ----------

        X : array-like, shape [n_samples, n_features]. The data used to compute the median and quantiles used for later scaling along the features axis.

        """

        # at fit, convert sparse matrices to csc for optimized computation of the quantiles

        X = self._validate_data(X, accept_sparse='csc', estimator=self,

         dtype=FLOAT_DTYPES,

            force_all_finite='allow-nan')

        q_min, q_max = self.quantile_range

        if not 0 <= q_min <= q_max <= 100:

            raise ValueError(

                "Invalid quantile range: %s" % str(self.quantile_range))

        if self.with_centering:

            if sparse.issparse(X):

                raise ValueError(

                    "Cannot center sparse matrices: use

                     `with_centering=False`"

                    " instead. See docstring for motivation and

                     alternatives.")

            self.center_ = np.nanmedian(X, axis=0)

        else:

            self.center_ = None

        if self.with_scaling:

            quantiles = []

            for feature_idx in range(X.shape[1]):

                if sparse.issparse(X):

                    column_nnz_data = X.data[X.indptr[feature_idx]:

                        X.indptr[feature_idx + 1]]

                    column_data = np.zeros(shape=X.shape[0], dtype=X.

                     dtype)

                    column_data[:len(column_nnz_data)] =

                     column_nnz_data

                else:

                    column_data = X[:feature_idx]

                quantiles.append(np.nanpercentile(column_data,

                        self.quantile_range))

            

            quantiles = np.transpose(quantiles)

            self.scale_ = quantiles[1] - quantiles[0]

            self.scale_ = _handle_zeros_in_scale(self.scale_, copy=False)

        else:

            self.scale_ = None

        return self

    

    def transform(self, X):

        """Center and scale the data.

 

        Parameters

        ----------

        X : {array-like, sparse matrix}

            The data used to scale along the specified axis.

        """

        check_is_fitted(self)

        X = check_array(X, accept_sparse=('csr', 'csc'), copy=self.

         copy,

            estimator=self, dtype=FLOAT_DTYPES,

            force_all_finite='allow-nan')

        if sparse.issparse(X):

            if self.with_scaling:

                inplace_column_scale(X, 1.0 / self.scale_)

        else:

            if self.with_centering:

                X -= self.center_

            if self.with_scaling:

                X /= self.scale_

        return X

    

    def inverse_transform(self, X):

        """Scale back the data to the original representation

 

        Parameters

        ----------

        X : array-like

            The data used to scale along the specified axis.

        """

        check_is_fitted(self)

        X = check_array(X, accept_sparse=('csr', 'csc'), copy=self.

         copy,

            estimator=self, dtype=FLOAT_DTYPES,

            force_all_finite='allow-nan')

        if sparse.issparse(X):

            if self.with_scaling:

                inplace_column_scale(X, self.scale_)

        else:

            if self.with_scaling:

                X *= self.scale_

            if self.with_centering:

                X += self.center_

        return X

    

    def _more_tags(self):

        return {'allow_nan':True}

 

 

 

相关文章
|
25天前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
125 67
|
18天前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
43 18
|
10天前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
40 8
|
19天前
|
Python
Python中的函数
Python中的函数
32 8
|
26天前
|
监控 测试技术 数据库
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
|
机器学习/深度学习 存储 测试技术
Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略
Python之 sklearn:sklearn中的RobustScaler 函数的简介及使用方法之详细攻略
|
19天前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
18天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
6天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
98 80
|
25天前
|
存储 索引 Python
Python编程数据结构的深入理解
深入理解 Python 中的数据结构是提高编程能力的重要途径。通过合理选择和使用数据结构,可以提高程序的效率和质量
134 59