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 = [[-2, 1, -4, -1],
... [-1, 2, -3, -0.5],
... [ 0, 3, -2, 0.5],
... [ 1, 4, -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 合并空间中的数据。 |