当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn StandardScaler用法及代码示例


本文简要介绍python语言中 sklearn.preprocessing.StandardScaler 的用法。

用法:

class sklearn.preprocessing.StandardScaler(*, copy=True, with_mean=True, with_std=True)

通过去除均值和缩放到单位方差来标准化特征。

样本x 的标准分数计算如下:

z = (x - u) /s

其中 u 是训练样本的平均值,如果 with_mean=False 则为零,而 s 是训练样本的标准差,如果 with_std=False 则为 1。

通过计算训练集中样本的相关统计数据,居中和缩放在每个特征上独立发生。然后使用 transform 存储平均值和标准偏差以用于以后的数据。

数据集的标准化是许多机器学习估计器的共同要求:如果单个特征或多或少看起来不像标准正态分布数据(例如,均值和单位方差为 0 的高斯),它们可能表现不佳。

例如,学习算法的目标函数中使用的许多元素(例如支持向量机的 RBF 核或线性模型的 L1 和 L2 正则化器)假设所有特征都以 0 为中心并且具有相同顺序的方差。如果一个特征的方差比其他特征大几个数量级,它可能会主导目标函数并使估计器无法按预期正确地从其他特征中学习。

这个缩放器也可以通过传递with_mean=False 应用于稀疏 CSR 或 CSC 矩阵,以避免破坏数据的稀疏结构。

在用户指南中阅读更多信息。

参数

copy布尔,默认=真

如果为 False,请尽量避免复制并改为进行就地缩放。这不能保证总是在原地工作;例如如果数据不是NumPy 数组或scipy.sparse CSR 矩阵,则仍可能返回副本。

with_mean布尔,默认=真

如果为 True,则在缩放之前将数据居中。当尝试在稀疏矩阵上时,这不起作用(并且会引发异常),因为将它们居中需要构建一个密集矩阵,在常见的用例中,它可能太大而无法放入内存。

with_std布尔,默认=真

如果为 True,则将数据缩放到单位方差(或等效地,单位标准差)。

属性

scale_ndarray 形状 (n_features,) 或无

每个特征相对缩放数据以实现零均值和单位方差。通常这是使用 np.sqrt(var_) 计算的。如果方差为零,则无法实现单位方差,并且数据保持原样,缩放因子为 1。当 with_std=False 时,scale_ 等于 None

mean_ndarray 形状 (n_features,) 或无

训练集中每个特征的平均值。当 with_mean=False 时等于 None

var_ndarray 形状 (n_features,) 或无

训练集中每个特征的方差。用于计算 scale_ 。当 with_std=False 时等于 None

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

n_samples_seen_int 或形状的 ndarray (n_features,)

估计器为每个特征处理的样本数量。如果没有丢失样本,则n_samples_seen将是一个整数,否则它将是一个dtype int的数组。如果使用 sample_weights,它将是一个浮点数(如果没有丢失数据)或一个 dtype float 数组,对迄今为止看到的权重进行求和。将在新调用时重置以适应,但在 partial_fit 调用中递增。

注意

NaNs 被视为缺失值:在拟合中忽略,并在变换中保持。

我们对标准差使用有偏差的估计器,相当于 numpy.std(x, ddof=0) 。请注意,ddof 的选择不太可能影响模型性能。

有关不同缩放器、转换器和规范器的比较,请参阅示例/预处理/plot_all_scaling.py。

例子

>>> from sklearn.preprocessing import StandardScaler
>>> data = [[0, 0], [0, 0], [1, 1], [1, 1]]
>>> scaler = StandardScaler()
>>> print(scaler.fit(data))
StandardScaler()
>>> print(scaler.mean_)
[0.5 0.5]
>>> print(scaler.transform(data))
[[-1. -1.]
 [-1. -1.]
 [ 1.  1.]
 [ 1.  1.]]
>>> print(scaler.transform([[2, 2]]))
[[3. 3.]]

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.preprocessing.StandardScaler。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。