當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。