QuantileTransformer#
- class sklearn.preprocessing.QuantileTransformer(*, n_quantiles=1000, output_distribution='uniform', ignore_implicit_zeros=False, subsample=10000, random_state=None, copy=True)[source]#
使用分位数信息变换特征。
此方法将特征转换为服从均匀分布或正态分布。因此,对于给定特征,此变换倾向于分散最频繁的值。它还减少了(边缘)异常值的影响:因此,这是一种鲁棒的预处理方案。
该变换独立地应用于每个特征。首先,使用特征的累积分布函数的估计值将原始值映射到均匀分布。然后,使用相关的分位数函数将获得的值映射到所需的输出分布。新/未见数据的特征值如果落在拟合范围之外,将被映射到输出分布的边界。请注意,此变换是非线性的。它可能会扭曲在相同尺度上测量的变量之间的线性相关性,但使在不同尺度上测量的变量更直接可比。
有关可视化示例,请参阅比较 QuantileTransformer 与其他缩放器。
在用户指南中了解更多信息。
版本 0.19 新增。
- 参数:
- n_quantilesint, 默认值=1000 或 n_samples
要计算的分位数数量。它对应于用于离散化累积分布函数的标志点数量。如果 n_quantiles 大于样本数量,n_quantiles 将被设置为样本数量,因为更多的分位数并不能更好地近似累积分布函数估计器。
- output_distribution{‘uniform’, ‘normal’}, 默认值=’uniform’
变换后数据的边缘分布。选择为 'uniform'(默认)或 'normal'。
- ignore_implicit_zerosbool, 默认值=False
仅适用于稀疏矩阵。如果为 True,则矩阵的稀疏条目将被丢弃以计算分位数统计数据。如果为 False,则这些条目被视为零。
- subsampleint 或 None, 默认值=10_000
用于估计分位数的最大样本数,以提高计算效率。请注意,对于值相同的稀疏和密集矩阵,子采样过程可能不同。通过设置
subsample=None
可禁用子采样。版本 1.5 新增: 添加了禁用子采样的选项
None
。- random_stateint, RandomState 实例或 None, 默认值=None
确定子采样和平滑噪声的随机数生成。有关更多详细信息,请参阅
subsample
。传递一个整数可在多次函数调用中获得可重现的结果。请参阅术语表。- copybool, 默认值=True
设置为 False 可执行原地变换并避免复制(如果输入已是 numpy 数组)。
- 属性:
另请参阅
quantile_transform
不使用估计器 API 的等效函数。
PowerTransformer
使用幂变换执行到正态分布的映射。
StandardScaler
执行更快但对异常值鲁棒性较差的标准化。
RobustScaler
执行鲁棒标准化,该标准化消除了异常值的影响,但未将异常值和内点置于相同尺度上。
备注
NaN 被视为缺失值:在拟合中忽略,在变换中保留。
示例
>>> import numpy as np >>> from sklearn.preprocessing import QuantileTransformer >>> rng = np.random.RandomState(0) >>> X = np.sort(rng.normal(loc=0.5, scale=0.25, size=(25, 1)), axis=0) >>> qt = QuantileTransformer(n_quantiles=10, random_state=0) >>> qt.fit_transform(X) array([...])
- fit(X, y=None)[source]#
计算用于变换的分位数。
- 参数:
- X形状为 (n_samples, n_features) 的 {array-like, 稀疏矩阵}
用于沿特征轴缩放的数据。如果提供了稀疏矩阵,它将被转换为稀疏的
csc_matrix
。此外,如果ignore_implicit_zeros
为 False,则稀疏矩阵需要是非负的。- yNone
忽略。
- 返回:
- selfobject
已拟合的变换器。
- fit_transform(X, y=None, **fit_params)[source]#
拟合数据,然后对其进行变换。
使用可选参数
fit_params
将变换器拟合到X
和y
,并返回X
的变换版本。- 参数:
- X形状为 (n_samples, n_features) 的 array-like
输入样本。
- y形状为 (n_samples,) 或 (n_samples, n_outputs) 的 array-like, 默认值=None
目标值(无监督变换为 None)。
- **fit_paramsdict
额外的拟合参数。
- 返回:
- X_new形状为 (n_samples, n_features_new) 的 ndarray 数组
变换后的数组。
- get_feature_names_out(input_features=None)[source]#
获取变换后的输出特征名称。
- 参数:
- input_featuresarray-like of str 或 None, 默认值=None
输入特征。
如果
input_features
为None
,则feature_names_in_
将用作输入特征名称。如果feature_names_in_
未定义,则生成以下输入特征名称:["x0", "x1", ..., "x(n_features_in_ - 1)"]
。如果
input_features
是 array-like,那么如果feature_names_in_
已定义,input_features
必须与feature_names_in_
匹配。
- 返回:
- feature_names_outstr 对象组成的 ndarray
与输入特征相同。
- get_metadata_routing()[source]#
获取此对象的元数据路由。
请查看用户指南,了解路由机制的工作原理。
- 返回:
- routingMetadataRequest
一个封装了路由信息的
MetadataRequest
。
- get_params(deep=True)[source]#
获取此估计器的参数。
- 参数:
- deepbool, 默认值=True
如果为 True,将返回此估计器及其包含的子对象(如果它们是估计器)的参数。
- 返回:
- paramsdict
参数名称及其对应的值。
- inverse_transform(X)[source]#
反向投影到原始空间。
- 参数:
- X形状为 (n_samples, n_features) 的 {array-like, 稀疏矩阵}
用于沿特征轴缩放的数据。如果提供了稀疏矩阵,它将被转换为稀疏的
csc_matrix
。此外,如果ignore_implicit_zeros
为 False,则稀疏矩阵需要是非负的。
- 返回:
- X_original形状为 (n_samples, n_features) 的 {ndarray, 稀疏矩阵}
投影数据。
- set_output(*, transform=None)[source]#
设置输出容器。
请参阅set_output API 介绍以了解如何使用此 API。
- 参数:
- transform{“default”, “pandas”, “polars”}, 默认值=None
配置
transform
和fit_transform
的输出。"default"
: 变换器的默认输出格式"pandas"
: DataFrame 输出"polars"
: Polars 输出None
: 变换配置不变
版本 1.4 新增: 添加了
"polars"
选项。
- 返回:
- self估计器实例
估计器实例。