ExtraTreeClassifier#

class sklearn.tree.ExtraTreeClassifier(*, criterion='gini', splitter='random', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='sqrt', random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, class_weight=None, ccp_alpha=0.0, monotonic_cst=None)[原始碼]#

極度隨機樹分類器。

Extra-trees 與傳統決策樹的建構方式不同。當尋找最佳分割以將節點的樣本分成兩組時,會針對每個隨機選取的 max_features 特徵繪製隨機分割,並從中選擇最佳分割。當 max_features 設定為 1 時,這相當於建構一個完全隨機的決策樹。

警告:Extra-trees 應僅在集成方法中使用。

請參閱使用者指南以了解更多資訊。

參數:
criterion{“gini”, “entropy”, “log_loss”}, default=”gini”

用於衡量分割品質的函數。支援的準則有:用於吉尼雜質的 “gini”,以及用於香農訊息增益的 “log_loss” 和 “entropy”,請參閱 數學公式

splitter{“random”, “best”}, default=”random”

用於在每個節點選擇分割的策略。支援的策略有:選擇最佳分割的 “best” 和選擇最佳隨機分割的 “random”。

max_depthint, default=None

樹的最大深度。如果為 None,則會擴展節點,直到所有葉節點都是純的,或者直到所有葉節點包含的樣本數少於 min_samples_split。

min_samples_splitint 或 float, default=2

分割內部節點所需的最小樣本數

  • 如果為 int,則將 min_samples_split 視為最小數量。

  • 如果為 float,則 min_samples_split 為分數,且 ceil(min_samples_split * n_samples) 是每次分割的最小樣本數。

版本變更:0.18: 新增分數的 float 值。

min_samples_leafint 或 float, default=1

葉節點所需的最小樣本數。只有當在任何深度的分割點在左右分支中都留下至少 min_samples_leaf 個訓練樣本時,才會考慮該分割點。這可能會產生平滑模型的效果,尤其是在迴歸中。

  • 如果為 int,則將 min_samples_leaf 視為最小數量。

  • 如果為 float,則 min_samples_leaf 為分數,且 ceil(min_samples_leaf * n_samples) 是每個節點的最小樣本數。

版本變更:0.18: 新增分數的 float 值。

min_weight_fraction_leaffloat, default=0.0

葉節點所需的最小權重分數,該分數是所有輸入樣本權重的總和。當未提供 sample_weight 時,樣本具有相同的權重。

max_featuresint, float, {“sqrt”, “log2”} 或 None, default=”sqrt”

尋找最佳分割時要考慮的特徵數量

  • 如果為 int,則在每次分割時考慮 max_features 個特徵。

  • 如果為 float,則 max_features 為分數,且在每次分割時考慮 max(1, int(max_features * n_features_in_)) 個特徵。

  • 如果為 “sqrt”,則 max_features=sqrt(n_features)

  • 如果為 “log2”,則 max_features=log2(n_features)

  • 如果為 None,則 max_features=n_features

版本變更:1.1: max_features 的預設值從 "auto" 變更為 "sqrt"

注意:搜尋分割不會停止,直到找到至少一個有效的節點樣本分割,即使這需要實際檢查超過 max_features 個特徵。

random_stateint, RandomState 實例或 None, default=None

用於隨機選取每次分割時使用的 max_features。詳細資訊請參閱 詞彙表

max_leaf_nodesint, default=None

以最佳優先方式成長具有 max_leaf_nodes 的樹。最佳節點定義為雜質的相對減少。如果為 None,則葉節點數量不受限制。

min_impurity_decreasefloat, default=0.0

如果此分割引起的雜質減少量大於或等於此值,則會分割節點。

加權雜質減少方程式如下

N_t / N * (impurity - N_t_R / N_t * right_impurity
                    - N_t_L / N_t * left_impurity)

其中 N 為樣本總數, N_t 為目前節點的樣本數, N_t_L 為左子節點的樣本數,而 N_t_R 為右子節點的樣本數。

NN_tN_t_RN_t_L 皆指加權總和,如果傳遞了 sample_weight 的話。

於 0.19 版本新增。

class_weightdict,dict 列表或 “balanced”,預設為 None

與類別相關的權重,形式為 {class_label: weight}。如果為 None,則假設所有類別的權重皆為 1。對於多輸出問題,可以按照 y 的列順序提供 dict 列表。

請注意,對於多輸出(包括多標籤)問題,應該為每個列的每個類別在其自己的 dict 中定義權重。例如,對於四類多標籤分類,權重應該為 [{0: 1, 1: 1}, {0: 1, 1: 5}, {0: 1, 1: 1}, {0: 1, 1: 1}],而不是 [{1:1}, {2:5}, {3:1}, {4:1}]。

“balanced” 模式使用 y 的值自動調整權重,權重與輸入資料中類別的頻率成反比,計算方式為 n_samples / (n_classes * np.bincount(y))

對於多輸出,y 的每個列的權重將會相乘。

請注意,如果指定了 sample_weight,這些權重將會與 sample_weight(通過 fit 方法傳遞)相乘。

ccp_alpha非負浮點數,預設為 0.0

用於最小成本複雜度剪枝的複雜度參數。將會選擇成本複雜度小於 ccp_alpha 的最大子樹。預設情況下,不執行剪枝。請參閱 最小成本複雜度剪枝 以取得詳細資訊。請參閱 使用成本複雜度剪枝進行後剪枝決策樹 以取得此類剪枝的範例。

於 0.22 版本新增。

monotonic_cst形狀為 (n_features) 的整數型陣列,預設為 None
表示要對每個特徵強制執行的單調性約束。
  • 1:單調遞增

  • 0:無約束

  • -1:單調遞減

如果 monotonic_cst 為 None,則不套用任何約束。

單調性約束不支援下列情況:
  • 多類別分類(即當 n_classes > 2 時),

  • 多輸出分類(即當 n_outputs_ > 1 時),

  • 在具有遺失值的資料上訓練的分類。

約束條件適用於正類別的機率。

請在使用者指南中閱讀更多資訊。

於 1.4 版本新增。

屬性:
classes_形狀為 (n_classes,) 的 ndarray 或 ndarray 的列表

類別標籤(單輸出問題),或是類別標籤陣列的列表(多輸出問題)。

max_features_整數

max_features 的推斷值。

n_classes_整數或整數列表

類別的數量(對於單輸出問題),或是一個包含每個輸出的類別數量的列表(對於多輸出問題)。

feature_importances_形狀為 (n_features,) 的 ndarray

返回特徵重要性。

n_features_in_整數

fit 期間看到的特徵數量。

於 0.24 版本新增。

feature_names_in_形狀為 (n_features_in_,) 的 ndarray

fit 期間看到的特徵名稱。只有在 X 具有所有字串的特徵名稱時才定義。

於 1.0 版本新增。

n_outputs_整數

執行 fit 時的輸出數量。

tree_Tree 實例

底層的 Tree 物件。請參閱 help(sklearn.tree._tree.Tree) 以取得 Tree 物件的屬性,並參閱 了解決策樹結構 以取得這些屬性的基本用法。

另請參閱

ExtraTreeRegressor

一個極度隨機化的樹迴歸器。

sklearn.ensemble.ExtraTreesClassifier

一個極度隨機樹分類器。

sklearn.ensemble.ExtraTreesRegressor

一個極度隨機樹迴歸器。

sklearn.ensemble.RandomForestClassifier

一個隨機森林分類器。

sklearn.ensemble.RandomForestRegressor

一個隨機森林迴歸器。

sklearn.ensemble.RandomTreesEmbedding

一個完全隨機樹的集成。

註解

控制樹木大小的參數(例如 max_depthmin_samples_leaf 等)的預設值會導致完全成長且未經剪枝的樹木,這些樹木在某些資料集上可能非常大。為了減少記憶體消耗,應透過設定這些參數值來控制樹木的複雜度和大小。

參考文獻

[1]

P. Geurts、D. Ernst 和 L. Wehenkel,「極度隨機樹」,機器學習,63(1),3-42,2006。

範例

>>> from sklearn.datasets import load_iris
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.ensemble import BaggingClassifier
>>> from sklearn.tree import ExtraTreeClassifier
>>> X, y = load_iris(return_X_y=True)
>>> X_train, X_test, y_train, y_test = train_test_split(
...    X, y, random_state=0)
>>> extra_tree = ExtraTreeClassifier(random_state=0)
>>> cls = BaggingClassifier(extra_tree, random_state=0).fit(
...    X_train, y_train)
>>> cls.score(X_test, y_test)
0.8947...
apply(X, check_input=True)[來源]#

傳回每個樣本預測為的葉節點索引。

於 0.17 版本新增。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

輸入樣本。在內部,它將被轉換為 dtype=np.float32,如果提供了稀疏矩陣,則轉換為稀疏的 csr_matrix

check_input布林值,預設為 True

允許略過幾個輸入檢查。除非您知道自己在做什麼,否則請勿使用此參數。

返回:
X_leaves形狀為 (n_samples,) 的類陣列

對於 X 中的每個資料點 x,傳回 x 最終所在的葉節點索引。葉節點在 [0; self.tree_.node_count) 中編號,數字可能會有間隙。

cost_complexity_pruning_path(X, y, sample_weight=None)[原始碼]#

計算最小成本複雜度修剪 (Minimal Cost-Complexity Pruning) 期間的修剪路徑。

請參閱 最小成本複雜度修剪 以了解有關修剪過程的詳細資訊。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

訓練輸入樣本。在內部,它將被轉換為 dtype=np.float32,如果提供稀疏矩陣,則會轉換為稀疏的 csc_matrix

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列 (array-like)

目標值(類別標籤),可以是整數或字串。

sample_weight形狀為 (n_samples,) 的類陣列 (array-like),預設值為 None

樣本權重。如果為 None,則樣本的權重相等。在每個節點中搜尋分割時,將忽略會建立淨權重為零或負值的子節點的分割。如果分割會導致任何單一類別在任一子節點中帶有負權重,也會忽略該分割。

返回:
ccp_pathBunch

類似字典的物件,具有以下屬性。

ccp_alphasndarray

修剪期間子樹的有效 alpha 值。

impuritiesndarray

子樹葉子在 ccp_alphas 中相應 alpha 值的雜質總和。

decision_path(X, check_input=True)[原始碼]#

傳回樹狀結構中的決策路徑。

在 0.18 版中新增。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

輸入樣本。在內部,它將被轉換為 dtype=np.float32,如果提供了稀疏矩陣,則轉換為稀疏的 csr_matrix

check_input布林值,預設為 True

允許略過幾個輸入檢查。除非您知道自己在做什麼,否則請勿使用此參數。

返回:
indicator形狀為 (n_samples, n_nodes) 的稀疏矩陣

傳回節點指標 CSR 矩陣,其中非零元素表示樣本通過的節點。

property feature_importances_#

返回特徵重要性。

特徵的重要性計算為該特徵帶來的準則(criterion)的(標準化)總減少量。它也稱為 Gini 重要性。

警告:基於雜質的特徵重要性對於高基數特徵(許多唯一值)可能具有誤導性。請參閱 sklearn.inspection.permutation_importance 作為替代方案。

返回:
feature_importances_形狀為 (n_features,) 的 ndarray

依特徵標準化的準則減少總量(Gini 重要性)。

fit(X, y, sample_weight=None, check_input=True)[原始碼]#

從訓練集 (X, y) 建立決策樹分類器。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

訓練輸入樣本。在內部,它將被轉換為 dtype=np.float32,如果提供稀疏矩陣,則會轉換為稀疏的 csc_matrix

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列 (array-like)

目標值(類別標籤),可以是整數或字串。

sample_weight形狀為 (n_samples,) 的類陣列 (array-like),預設值為 None

樣本權重。如果為 None,則樣本的權重相等。在每個節點中搜尋分割時,將忽略會建立淨權重為零或負值的子節點的分割。如果分割會導致任何單一類別在任一子節點中帶有負權重,也會忽略該分割。

check_input布林值,預設為 True

允許略過幾個輸入檢查。除非您知道自己在做什麼,否則請勿使用此參數。

返回:
selfDecisionTreeClassifier

已擬合的估計器。

get_depth()[原始碼]#

傳回決策樹的深度。

樹的深度是根與任何葉子之間的最大距離。

返回:
self.tree_.max_depthint

樹的最大深度。

get_metadata_routing()[原始碼]#

取得此物件的中繼資料路由。

請查看 使用者指南,了解路由機制如何運作。

返回:
routingMetadataRequest

一個 MetadataRequest,封裝路由資訊。

get_n_leaves()[原始碼]#

傳回決策樹的葉子數量。

返回:
self.tree_.n_leavesint

葉子數量。

get_params(deep=True)[原始碼]#

取得此估計器的參數。

參數:
deepbool,預設值為 True

如果為 True,將傳回此估計器和包含的子物件(也是估計器)的參數。

返回:
paramsdict

參數名稱對應到它們的值。

predict(X, check_input=True)[原始碼]#

預測 X 的類別或迴歸值。

對於分類模型,會傳回 X 中每個樣本的預測類別。對於迴歸模型,會傳回基於 X 的預測值。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

輸入樣本。在內部,它將被轉換為 dtype=np.float32,如果提供了稀疏矩陣,則轉換為稀疏的 csr_matrix

check_input布林值,預設為 True

允許略過幾個輸入檢查。除非您知道自己在做什麼,否則請勿使用此參數。

返回:
y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列 (array-like)

預測的類別或預測值。

predict_log_proba(X)[原始碼]#

預測輸入樣本 X 的類別對數機率。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

輸入樣本。在內部,它將被轉換為 dtype=np.float32,如果提供了稀疏矩陣,則轉換為稀疏的 csr_matrix

返回:
proba形狀為 (n_samples, n_classes) 的 ndarray,如果 n_outputs > 1,則為 n_outputs 個此類陣列的列表

輸入樣本的類別對數機率。類別的順序與屬性 classes_ 中的順序一致。

predict_proba(X, check_input=True)[原始碼]#

預測輸入樣本 X 的類別機率。

預測的類別機率是葉節點中相同類別樣本的比例。

參數:
X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}

輸入樣本。在內部,它將被轉換為 dtype=np.float32,如果提供了稀疏矩陣,則轉換為稀疏的 csr_matrix

check_input布林值,預設為 True

允許略過幾個輸入檢查。除非您知道自己在做什麼,否則請勿使用此參數。

返回:
proba形狀為 (n_samples, n_classes) 的 ndarray,如果 n_outputs > 1,則為 n_outputs 個此類陣列的列表

輸入樣本的類別機率。類別的順序與屬性 classes_ 中的順序一致。

score(X, y, sample_weight=None)[原始碼]#

返回給定測試數據和標籤的平均準確度。

在多標籤分類中,這是子集準確度,這是一個嚴苛的指標,因為它要求每個樣本的每個標籤集都被正確預測。

參數:
X形狀為 (n_samples, n_features) 的類陣列

測試樣本。

y形狀為 (n_samples,) 或 (n_samples, n_outputs) 的類陣列 (array-like)

X 的真實標籤。

sample_weight形狀為 (n_samples,) 的類陣列 (array-like),預設值為 None

樣本權重。

返回:
score浮點數

self.predict(X) 相對於 y 的平均準確度。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') ExtraTreeClassifier[原始碼]#

請求傳遞給 fit 方法的中繼資料。

請注意,僅當 enable_metadata_routing=True 時,此方法才相關(請參閱 sklearn.set_config)。請參閱 使用者指南,了解路由機制的工作原理。

每個參數的選項為

  • True:請求中繼資料,如果提供,則將其傳遞給 fit。如果未提供中繼資料,則忽略請求。

  • False:不請求中繼資料,且元估計器不會將其傳遞給 fit

  • None:不請求中繼資料,如果使用者提供,元估計器將引發錯誤。

  • str:中繼資料應使用此給定別名而不是原始名稱傳遞給元估計器。

預設值(sklearn.utils.metadata_routing.UNCHANGED)保留現有請求。這允許您更改某些參數的請求,而不更改其他參數。

在版本 1.3 中新增。

注意

僅當此估計器用作元估計器的子估計器時,例如在 Pipeline 內部使用時,此方法才相關。否則,它沒有任何作用。

參數:
sample_weight字串、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED

fitsample_weight 參數的中繼資料路由。

返回:
self物件

更新後的物件。

set_params(**params)[原始碼]#

設定此估計器的參數。

該方法適用於簡單的估計器以及巢狀物件(例如 Pipeline)。後者的參數形式為 <component>__<parameter>,因此可以更新巢狀物件的每個元件。

參數:
**params字典

估計器參數。

返回:
self估計器實例

估計器實例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') ExtraTreeClassifier[原始碼]#

請求傳遞給 score 方法的中繼資料。

請注意,僅當 enable_metadata_routing=True 時,此方法才相關(請參閱 sklearn.set_config)。請參閱 使用者指南,了解路由機制的工作原理。

每個參數的選項為

  • True:請求中繼資料,並在提供時傳遞給 score。如果未提供中繼資料,則忽略該請求。

  • False:不請求中繼資料,且元估計器不會將其傳遞給 score

  • None:不請求中繼資料,如果使用者提供,元估計器將引發錯誤。

  • str:中繼資料應使用此給定別名而不是原始名稱傳遞給元估計器。

預設值(sklearn.utils.metadata_routing.UNCHANGED)保留現有請求。這允許您更改某些參數的請求,而不更改其他參數。

在版本 1.3 中新增。

注意

僅當此估計器用作元估計器的子估計器時,例如在 Pipeline 內部使用時,此方法才相關。否則,它沒有任何作用。

參數:
sample_weight字串、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED

用於 score 中的 sample_weight 參數的中繼資料路由。

返回:
self物件

更新後的物件。