sklearn.preprocessing.KBinsDiscretizer

class sklearn.preprocessing.KBinsDiscretizer(n_bins=5, *, encode='onehot', strategy='quantile')

[源码]

将连续数据分成间隔。

用户指南中阅读更多内容。

0.20版中的新功能。

参数 说明
n_bins int or array-like, shape (n_features,) (default=5)
产生的箱数。如果n_bins <2,则引发ValueError。
encode {‘onehot’, ‘onehot-dense’, ‘ordinal’}, (default=’onehot’)
用于编码转换结果的方法。
onehot
使用一键编码对转换后的结果进行编码,然后返回一个稀疏矩阵。忽略的要素总是堆叠在右侧。
onehot-dense
用一个热编码对转换后的结果进行编码,并返回一个密集数组。忽略的要素总是堆叠在右侧。
ordinal
返回编码为整数值的bin标识符。
strategy {‘uniform’, ‘quantile’, ‘kmeans’}, (default=’quantile’)
用于定义箱子宽度的策略。
uniform
每个功能中的所有箱子具有相同的宽度。
quantile
每个功能中的所有存储箱都具有相同的点数。
kmeans
每个bin中的值都具有一维k均值聚类的最接近中心。
属性 说明
n_bins int array, shape (n_features,)
每个功能的箱数。宽度过小(即 <= 1e-8)的箱将被移除,并发出警告。
bin_edges_ array of arrays, shape (n_features, )
每个箱子的边缘。包含不同形状的数组(n_bin_2;,),忽略的功能将具有空数组。

另见:

sklearn.preprocessing.Binarizer

用于根据参数阈值将值归为0或1的类。

注释

在特征i的bin边缘中,第一个和最后一个值仅用于inverse_transform。在变换过程中,bin边将扩展到:

np.concatenate([-np.inf, bin_edges_[i][1:-1], np.inf])

如果只想预处理部分功能,则可以将KBinsDiscretizer与sklearn.compose.ColumnTransformer 结合使用。

KBinsDiscretizer可能会产生不变的特征(例如,当encode ='onehot'并且某些bin不包含任何数据时)。

这些特征可以通过特征选择算法删除(例如, sklearn.feature_selection.VarianceThreshold.

示例

>>> X = [[-21-4,   -1],
...      [-12-3-0.5],
...      [ 03-2,  0.5],
...      [ 14-1,    2]]
>>> est = KBinsDiscretizer(n_bins=3, encode='ordinal', strategy='uniform')
>>> est.fit(X)
KBinsDiscretizer(...)
>>> Xt = est.transform(X)
>>> Xt  # doctest: +SKIP
array([[ 0.0.0.0.],
       [ 1.1.1.0.],
       [ 2.2.2.1.],
       [ 2.2.2.2.]])

有时将数据转换回原始特征空间可能很有用。Inverse_transform函数将合并的数据转换为原始特征空间。每个值将等于两个面元边缘的平均值。

>>> est.bin_edges_[0]
array([-2.-1.,  0.,  1.])
>>> est.inverse_transform(Xt)
array([[-1.5,  1.5-3.5-0.5],
       [-0.5,  2.5-2.5-0.5],
       [ 0.5,  3.5-1.5,  0.5],
       [ 0.5,  3.5-1.5,  1.5]])

方法

方法 说明
fit(self, X[, y]) 拟合估计量。
fit_transform(self, X[, y]) 拟合数据,然后对其进行转换。
get_params(self[, deep]) 获取此估计量的参数。
inverse_transform(self, Xt) 将离散化的数据转换回原始特征空间。
set_params(self, **params) 设置此估算器的参数。
transform(self, X) 离散化数据。
__init__(self, n_bins=5, *, encode='onehot', strategy='quantile')

[源码]

初始化self,有关准确的签名,请参见help(type(self))。

fit(self, X, y=None)

[源码]

拟合估计量。

参数 说明
X numeric array-like, shape (n_samples, n_features)
要离散化的数据。
y None
忽略。仅存在此参数是为了与sklearn.pipeline.Pipeline兼容。
返回值 说明
self -
fit_transform(self, X, y=None, **fit_params)

[源码]

拟合数据,然后对其进行转换。

使用可选参数fit_params将转换器拟合到X和y,并返回X的转换版本。

参数 说明
X {array-like, sparse matrix, dataframe} of shape (n_samples, n_features)
y ndarray of shape (n_samples,), default=None
目标值。
**fit_params dict
其他拟合参数。
返回值 说明
X_new ndarray array of shape (n_samples, n_features_new)
转换后的数组。
get_params(self, deep=True

[源码]

获取此估计量的参数。

参数 说明
deep bool, default = True
如果为True,则将返回此估算器和作为估算器的所包含子对象的参数。
返回值 说明
params mapping of string to any
参数名被映射至他们的值
inverse_transform(self, Xt)

[源码]

将离散化的数据转换回原始特征空间。

注意,由于离散化舍入,此函数不会重新生成原始数据。

参数 说明
Xt numeric array-like, shape (n_sample, n_features)
合并空间中的转换数据。
返回值 说明
Xinv numeric array-like
原始要素空间中的数据。
set_params(self, **params)

[源码]

设置此估算器的参数。

该方法适用于简单的估计器以及嵌套对象(例如管道)。后者的参数形式为<component>__<parameter>这样就可以更新嵌套对象的每个组件。

参数 说明
**params dict
估算器参数。
返回值 说明
self object
估算器实例。
transform(self, X)

[源码]

离散化数据。

参数 说明
Xt numeric array-like, shape (n_sample, n_features)
要离散化的数据。
返回值 说明
Xt numeric array-like or sparse matrix
合并空间中的数据。