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


Python sklearn HistGradientBoostingClassifier用法及代碼示例


本文簡要介紹python語言中 sklearn.ensemble.HistGradientBoostingClassifier 的用法。

用法:

class sklearn.ensemble.HistGradientBoostingClassifier(loss='auto', *, learning_rate=0.1, max_iter=100, max_leaf_nodes=31, max_depth=None, min_samples_leaf=20, l2_regularization=0.0, max_bins=255, categorical_features=None, monotonic_cst=None, warm_start=False, early_stopping='auto', scoring='loss', validation_fraction=0.1, n_iter_no_change=10, tol=1e-07, verbose=0, random_state=None)

基於直方圖的梯度提升分類樹。

對於大型數據集(n_samples >= 10 000),此估計器比 GradientBoostingClassifier 快得多。

此估算器對缺失值 (NaN) 具有原生支持。在訓練過程中,樹種植者根據潛在增益在每個分割點學習具有缺失值的樣本是應該去左孩子還是右孩子。在預測時,具有缺失值的樣本因此被分配給左孩子或右孩子。如果在訓練期間沒有遇到給定特征的缺失值,則將具有缺失值的樣本映射到擁有最多樣本的子節點。

此實現的靈感來自 LightGBM

在用戶指南中閱讀更多信息。

參數

loss{‘auto’, ‘binary_crossentropy’,‘categorical_crossentropy’},默認='自動'

在提升過程中使用的損失函數。 ‘binary_crossentropy’(也稱為邏輯損失)用於二元分類,並推廣到‘categorical_crossentropy’用於多類分類。 ‘auto’ 將根據問題的性質自動選擇任一損失。

learning_rate浮點數,默認=0.1

學習率,也稱為收縮.這用作葉子值的乘法因子。采用1因為沒有收縮。

max_iter整數,默認=100

boosting過程的最大迭代次數,即二分類的最大樹數。對於多類分類,每次迭代都會構建n_classes 樹。

max_leaf_nodesint 或無,默認=31

每棵樹的最大葉子數。必須嚴格大於 1。如果為 None,則沒有最大限製。

max_depthint 或無,默認=無

每棵樹的最大深度。樹的深度是從根到最深葉的邊數。默認情況下,深度不受限製。

min_samples_leaf整數,默認=20

每片葉子的最小樣本數。對於少於幾百個樣本的小型數據集,建議降低此值,因為隻會構建非常淺的樹。

l2_regularization浮點數,默認=0

L2 正則化參數。使用 0 表示不進行正則化。

max_bins整數,默認=255

用於非缺失值的最大箱數。在訓練之前,輸入數組 X 的每個特征都被分箱到整數值箱中,這允許更快的訓練階段。具有少量唯一值的特征可能使用少於max_bins bin。除了max_bins bin 之外,還始終為缺失值保留一個 bin。不得大於 255。

categorical_features類似形狀 (n_features) 或形狀 (n_categorical_features,) 的 {bool, int} 數組,默認=無

表示分類特征。

  • 無:沒有特征將被視為分類。
  • 類似布爾數組:指示分類特征的布爾掩碼。
  • 類似整數數組:指示分類特征的整數索引。

對於每個分類特征,最多隻能有max_bins唯一的分類,並且每個分類值必須在[0,max_bins-1]內。

在用戶指南中閱讀更多信息。

monotonic_cst形狀為 int 的類似數組 (n_features),默認=無

指示要對每個特征強製執行的單調約束。 -1、1、0分別對應負約束、正約束和無約束。在用戶指南中閱讀更多信息。

warm_start布爾,默認=假

當設置為 True 時,重用前一個調用的解決方案以適應並向集成添加更多估計器。為了使結果有效,估計器應該隻在相同的數據上重新訓練。請參閱詞匯表。

early_stopping‘auto’ 或布爾值,默認='auto'

如果‘auto’,如果樣本大小大於10000,則啟用提前停止。如果為True,則啟用提前停止,否則禁用提前停止。

scoringstr or callable or None, default='loss'

用於提前停止的評分參數。它可以是單個字符串(請參閱評分參數:定義模型評估規則)或可調用的(請參閱從度量函數定義評分策略)。如果沒有,則使用估計器的默認記分器。如果 scoring='loss' ,則根據損失值檢查提前停止。僅在執行提前停止時使用。

validation_fractionint 或浮點數或無,默認=0.1

留出作為提前停止驗證數據的訓練數據的比例(或絕對大小)。如果沒有,則對訓練數據進行提前停止。僅在執行提前停止時使用。

n_iter_no_change整數,默認=10

用於確定何時“early stop”。當最後一個 n_iter_no_change 分數都沒有優於 n_iter_no_change - 1 -th-to-last 分數時,擬合過程將停止,達到一定的容差。僅在執行提前停止時使用。

tol浮點數,默認=1e-7

比較分數時使用的絕對容差。容差越高,我們越有可能提前停止:容差越高意味著後續迭代越難被視為對參考分數的改進。

verbose整數,默認=0

詳細程度。如果不為零,則打印一些有關擬合過程的信息。

random_stateint、RandomState 實例或無,默認=無

偽隨機數生成器用於控製分箱過程中的二次采樣,如果啟用了提前停止,則訓練/驗證數據拆分。傳遞 int 以獲得跨多個函數調用的可重現輸出。請參閱詞匯表。

屬性

classes_數組,形狀 = (n_classes,)

類標簽。

do_early_stopping_bool

指示是否在訓練期間使用提前停止。

n_iter_int

提升過程的迭代次數。

n_trees_per_iteration_int

在每次迭代中構建的樹的數量。對於二元分類,這等於 1,對於多類分類,它等於 n_classes

train_score_ndarray,形狀(n_iter_+1,)

訓練數據上每次迭代的分數。第一個條目是第一次迭代之前的集成得分。分數根據scoring 參數計算。如果 scoring 不是 ‘loss’,則在最多 10 000 個樣本的子集上計算分數。如果沒有提前停止,則為空。

validation_score_ndarray,形狀(n_iter_+1,)

held-out 驗證數據上每次迭代的分數。第一個條目是第一次迭代之前的集成得分。分數根據scoring 參數計算。如果沒有提前停止或 validation_fraction 為 None,則為空。

is_categorical_ndarray,形狀(n_features,)或無

分類特征的布爾掩碼。 None 如果沒有分類特征。

n_features_in_int

擬合期間看到的特征數。

feature_names_in_ndarray 形狀(n_features_in_,)

擬合期間看到的特征名稱。僅當 X 具有全為字符串的函數名稱時才定義。

例子

>>> from sklearn.ensemble import HistGradientBoostingClassifier
>>> from sklearn.datasets import load_iris
>>> X, y = load_iris(return_X_y=True)
>>> clf = HistGradientBoostingClassifier().fit(X, y)
>>> clf.score(X, y)
1.0

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.ensemble.HistGradientBoostingClassifier。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。