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
為右子節點的樣本數。N
、N_t
、N_t_R
和N_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_depth
、min_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_path
Bunch
類似字典的物件,具有以下屬性。
- ccp_alphasndarray
修剪期間子樹的有效 alpha 值。
- impuritiesndarray
子樹葉子在
ccp_alphas
中相應 alpha 值的雜質總和。
- ccp_path
- 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_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看 使用者指南,了解路由機制如何運作。
- 返回:
- routingMetadataRequest
一個
MetadataRequest
,封裝路由資訊。
- 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
在
fit
中sample_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物件
更新後的物件。