StandardScaler文档先说明,中心化和缩放分别对每个特征进行,相关均值与标准差会被保存,供后来的transform使用。公式中的中心u是训练样本均值,关闭with_mean时为零;尺度s为标准差,关闭with_std时为一。[1] 这是接口所定义的统计量关系,不是本文运行一份数据得出的输出。
保存下来的scale_不是无条件把每列变成单位方差的证明。官方把它定义为逐特征的相对尺度,通常由var_的平方根计算;但某个特征方差为零时,单位方差无法实现,尺度因子取一。这时“一”是文档给出的退化条件处理,不表示来源已经观察到该特征具有一单位的方差。
scale_还有另一种值:with_std为False时,它是None。于是,相同属性中的一与None承担不同角色:前者仍是一个尺度因子,后者对应关闭标准差缩放这一条件。将两者都概括成“没有缩放信息”,会删去它们为何出现的具体依据。
mean_记录每个特征的均值,var_记录每个特征的方差,并用于计算scale_。文档对这两个属性的None条件同时列出with_mean=False和with_std=False。因此,不能只摘一个开关的名字,便宣称两个统计量必然都不存在;公开属性说明保留的是两个条件的组合。
特征身份又由另一组属性记录。n_features_in_是fit所见的特征数量;feature_names_in_保存特征名称,但只有输入名称全部为字符串时才定义。一个整数数量与一组名称并非同一份资料:有了数量,不足以补出每个特征叫什么;名称属性的成立条件也没有改变此前逐特征统计量的含义。
n_samples_seen_则记录每个特征处理过的样本数,没有缺失样本时是整数,存在缺失时是整数数组。Notes解释,NaN在fit中按缺失处理而被忽略,在transform中仍保留。逐特征的有效样本资料由此可能需要分别表示,不能把一个总行数直接当作任何情况下每列都相同的已见数量。
有sample weights时,同一个计数属性还会使用浮点数;若同时有缺失,则为浮点数组。来源明确将其描述为到目前为止所见权重之和。数值类型从整数换为浮点,因而不只关乎显示小数点,而是该记录在这一条件下表达加权和,未必仍能读成若干条完整样本行。
这份记录随调用类型更新:新的fit会重置n_samples_seen_,partial_fit之间则累计。该属性既有当前保存的值,也有从哪些处理阶段延续而来的关系。重置与累计是文档分别点名的行为,不是本文比较过两次真实训练结果,也不据它们推荐数据切分、训练或部署方法。
本文固定采用实际显示1.9.1的属性定义和Notes邻接,没有执行模型或比较效果;历史版本注记与网页更新时间均不充作首次发表日期。
信息来源
本文基于上述公开资料整理,未使用来源页面的图片、视频或嵌入媒体。