maxframe.learn.preprocessing.StandardScaler#
- class maxframe.learn.preprocessing.StandardScaler(*, copy=True, with_mean=True, with_std=True, validate=True)[源代码]#
通过去除均值并将方差缩放到单位值来标准化特征。
样本 x 的标准分数计算为:
z = (x - u) / s
其中 u 是训练样本的均值,如果 with_mean=False 则为零;s 是训练样本的标准差,如果 with_std=False 则为一。
通过计算训练集中样本的相关统计量,对每个特征分别进行中心化和缩放。然后将均值和标准差存储起来,以便后续数据使用
transform()处理。标准化是许多机器学习算法的常见要求:如果各个特征不近似于标准的正态分布(例如均值为 0 且方差为 1 的高斯分布),这些算法的表现可能会很差。
例如,许多用于学习算法目标函数的元素(如支持向量机的 RBF 核,或线性模型的 L1 和 L2 正则化项)都假设所有特征都围绕 0 中心化,并且方差处于同一量级。如果某个特征的方差远大于其他特征,它可能会主导目标函数,使得估计器无法如预期那样从其他特征中正确学习。
StandardScaler 对异常值敏感,在存在异常值的情况下,特征之间的缩放方式可能不同。示例可视化请参见 Compare StandardScaler with other scalers。
此缩放器也可以应用于稀疏的 CSR 或 CSC 矩阵,只需传入 with_mean=False,以避免破坏数据的稀疏结构。
更多内容请参阅 用户指南。
- 参数:
- scale_#
按特征对数据进行相对缩放,使其具有零均值和单位方差。通常使用 np.sqrt(var_) 计算。如果某个方差为零,则无法实现单位方差,数据将保持不变,缩放因子为 1。当 with_std=False 时,scale_ 等于 None。
- 类型:
形状为 (n_features,) 的 ndarray 或 None
- mean_#
训练集中每个特征的均值。当
with_mean=False且with_std=False时为None。- 类型:
形状为 (n_features,) 的 ndarray 或 None
- var_#
训练集中每个特征的方差。用于计算 scale_。当
with_mean=False且with_std=False时为None。- 类型:
形状为 (n_features,) 的 ndarray 或 None
- feature_names_in_#
在 fit 过程中看到的特征名称。仅在 X 的特征名称均为字符串时定义。
- 类型:
形状为 (n_features_in_,) 的 ndarray
- n_samples_seen_#
每个特征由估计器处理的样本数。如果没有缺失样本,
n_samples_seen将是一个整数,否则是一个 dtype 为 int 的数组。如果使用了 sample_weights,它将是一个浮点数(如果没有缺失数据)或一个 dtype 为 float 的数组,汇总到目前为止看到的权重。在新的 fit 调用时将重置,但在partial_fit调用之间会递增。- 类型:
int 或形状为 (n_features,) 的 ndarray
参见
scale不使用估计器 API 的等效函数。
PCA使用 'whiten=True' 进一步消除特征之间的线性相关性。
备注
NaN 被视为缺失值:在拟合时被忽略,在变换时保留。
我们使用有偏估计量计算标准差,等价于 numpy.std(x, ddof=0)。注意 ddof 的选择不太可能影响模型性能。
示例
>>> from maxframe.learn.preprocessing import StandardScaler >>> data = [[0, 0], [0, 0], [1, 1], [1, 1]] >>> scaler = StandardScaler() >>> print(scaler.fit(data)) StandardScaler() >>> print(scaler.mean_.execute()) [0.5 0.5] >>> print(scaler.transform(data).execute()) [[-1. -1.] [-1. -1.] [ 1. 1.] [ 1. 1.]] >>> print(scaler.transform([[2, 2]]).execute()) [[3. 3.]]
方法
__init__(*[, copy, with_mean, with_std, ...])execute([session, run_kwargs, extra_tileables])fetch([session, run_kwargs])fit(X[, y, sample_weight, execute, session, ...])计算用于后续缩放的均值和标准差。
fit_transform(X[, y])拟合数据,然后进行变换。
inverse_transform(X[, copy, execute, ...])将数据缩放回原始表示形式。
partial_fit(X[, y, sample_weight, execute, ...])在线计算 X 的均值和标准差以供后续缩放使用。
transform(X[, copy, execute, session, ...])通过中心化和缩放执行标准化。