当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python sklearn KBinsDiscretizer用法及代码示例


本文简要介绍python语言中 sklearn.preprocessing.KBinsDiscretizer 的用法。

用法:

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

将连续数据分档为区间。

在用户指南中阅读更多信息。

参数

n_binsint 或形状类似数组 (n_features,),默认=5

要生产的箱子数量。如果 n_bins < 2 则引发 ValueError 。

encode{‘onehot’, 'onehot-dense', ‘ordinal’}, 默认='onehot'

用于对转换结果进行编码的方法。

  • ‘onehot’:使用one-hot编码对变换后的结果进行编码,并返回一个稀疏矩阵。忽略的特征总是堆叠在右侧。
  • ‘onehot-dense’:使用one-hot编码对转换后的结果进行编码,并返回一个密集数组。忽略的特征总是堆叠在右侧。
  • ‘ordinal’:返回编码为整数值的 bin 标识符。
strategy{‘uniform’, ‘quantile’, ‘kmeans’},默认='分位数'

用于定义 bin 宽度的策略。

  • ‘uniform’:每个特征中的所有 bin 具有相同的宽度。
  • ‘quantile’:每个特征中的所有 bin 具有相同数量的点。
  • ‘kmeans’:每个 bin 中的值具有相同的一维 k-means 簇的最近中心。
dtype{np.float32, np.float64},默认=无

输出所需的数据类型。如果为 None,则输出 dtype 与输入 dtype 一致。仅支持 np.float32 和 np.float64。

属性

bin_edges_ndarray of ndarray of shape (n_features,)

每个 bin 的边。包含不同形状的数组(n_bins_, ) 忽略的特征将有空数组。

n_bins_ndarray 形状 (n_features,), dtype=np.int_

每个特征的 bin 数量。宽度太小(即 <= 1e-8)的 bin 将被删除并发出警告。

n_features_in_int

拟合期间看到的特征数。

feature_names_in_ndarray 形状(n_features_in_,)

拟合期间看到的特征名称。仅当 X 具有全为字符串的函数名称时才定义。

注意

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

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

如果您只想预处理部分特征,可以将KBinsDiscretizer ColumnTransformer 结合使用。

KBinsDiscretizer 可能会产生恒定特征(例如,当 encode = 'onehot' 和某些 bin 不包含任何数据时)。可以使用特征选择算法(例如, VarianceThreshold )删除这些特征。

例子

>>> from sklearn.preprocessing import KBinsDiscretizer
>>> 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  
array([[ 0., 0., 0., 0.],
       [ 1., 1., 1., 0.],
       [ 2., 2., 2., 1.],
       [ 2., 2., 2., 2.]])

有时将数据转换回原始特征空间可能很有用。 inverse_transform 函数将分箱数据转换为原始特征空间。每个值将等于两个 bin 边的平均值。

>>> 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]])

相关用法


注:本文由纯净天空筛选整理自scikit-learn.org大神的英文原创作品 sklearn.preprocessing.KBinsDiscretizer。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。