隨機樹嵌入#
- class sklearn.ensemble.RandomTreesEmbedding(n_estimators=100, *, max_depth=5, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_leaf_nodes=None, min_impurity_decrease=0.0, sparse_output=True, n_jobs=None, random_state=None, verbose=0, warm_start=False)[原始碼]#
完全隨機樹的集成。
將數據集轉換為高維稀疏表示的無監督轉換。數據點根據其被分類到每棵樹的哪個葉子來編碼。使用葉子的獨熱編碼,這會產生一個二進制編碼,其中 1 的數量與森林中的樹木數量一樣多。
所得表示的維度為
n_out <= n_estimators * max_leaf_nodes
。如果max_leaf_nodes == None
,則葉節點的數量最多為n_estimators * 2 ** max_depth
。請在使用者指南中閱讀更多內容。
- 參數:
- n_estimatorsint,預設值=100
森林中的樹木數量。
在版本 0.22 中變更:
n_estimators
的預設值在 0.22 中從 10 變更為 100。- max_depthint,預設值=5
每棵樹的最大深度。如果為 None,則擴展節點,直到所有葉子都是純的,或者直到所有葉子包含的樣本少於 min_samples_split 個樣本。
- min_samples_splitint 或 float,預設值=2
分割內部節點所需的最小樣本數
如果為 int,則將
min_samples_split
視為最小值。如果為 float,則
min_samples_split
是一個分數,而ceil(min_samples_split * n_samples)
是每次分割的最小樣本數。
在版本 0.18 中變更:為分數添加了浮點值。
- min_samples_leafint 或 float,預設值=1
葉節點所需的最小樣本數。只有在任何深度上的分割點在左分支和右分支中都至少留下
min_samples_leaf
個訓練樣本時,才會考慮該分割點。這可能會產生平滑模型的效果,特別是在迴歸中。如果為 int,則將
min_samples_leaf
視為最小值。如果為 float,則
min_samples_leaf
是一個分數,而ceil(min_samples_leaf * n_samples)
是每個節點的最小樣本數。
在版本 0.18 中變更:為分數添加了浮點值。
- min_weight_fraction_leaffloat,預設值=0.0
葉節點所需的權重總和(所有輸入樣本的權重總和)的最小加權分數。當未提供 sample_weight 時,樣本具有相等的權重。
- max_leaf_nodesint,預設值=None
以最佳優先方式使用
max_leaf_nodes
來生長樹。最佳節點被定義為雜質的相對減少。如果為 None,則表示葉節點數量不受限制。- min_impurity_decreasefloat,預設值=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
是右子節點中的樣本數。如果傳遞
sample_weight
,則N
、N_t
、N_t_R
和N_t_L
都表示加權總和。新增於版本 0.19。
- sparse_outputbool,預設值=True
是否傳回稀疏 CSR 矩陣(預設行為),還是傳回與密集管線運算符相容的密集陣列。
- n_jobsint,預設值=None
平行執行的任務數量。
fit
、transform
、decision_path
和apply
都會在樹之間平行處理。None
代表 1,除非在joblib.parallel_backend
環境中。-1
代表使用所有處理器。詳情請參閱 詞彙表。- random_stateint、RandomState 實例或 None,預設值為 None
控制用於擬合樹的隨機
y
的生成,以及樹節點上每個特徵的分裂繪製。詳情請參閱詞彙表。- verboseint,預設值為 0
控制擬合和預測時的詳細程度。
- warm_startbool,預設值為 False
設定為
True
時,重複使用上次呼叫的解決方案進行擬合,並將更多估計器加入集成,否則只會擬合一個全新的森林。詳情請參閱詞彙表和擬合額外的樹。
- 屬性:
- estimator_
ExtraTreeRegressor
實例 用於建立擬合子估計器集合的子估計器範本。
在 1.2 版中新增:
base_estimator_
已重新命名為estimator_
。- estimators_
ExtraTreeRegressor
實例列表 擬合子估計器的集合。
feature_importances_
形狀為 (n_features,) 的 ndarray基於不純度的特徵重要性。
- n_features_in_int
在擬合期間看到的特徵數量。
在 0.24 版中新增。
- feature_names_in_形狀為 (
n_features_in_
,) 的 ndarray 在擬合期間看到的特徵名稱。僅當
X
具有都是字串的特徵名稱時才定義。在 1.0 版中新增。
- n_outputs_int
執行
fit
時的輸出數量。- one_hot_encoder_OneHotEncoder 實例
用於建立稀疏嵌入的獨熱編碼器。
estimators_samples_
陣列列表每個基本估計器的抽樣子集。
- estimator_
另請參閱
ExtraTreesClassifier
一個極端隨機樹分類器。
ExtraTreesRegressor
一個極端隨機樹迴歸器。
RandomForestClassifier
一個隨機森林分類器。
RandomForestRegressor
一個隨機森林迴歸器。
sklearn.tree.ExtraTreeClassifier
一個極度隨機化的樹分類器。
sklearn.tree.ExtraTreeRegressor
一個極度隨機化的樹迴歸器。
參考文獻
[1]P. Geurts、D. Ernst 和 L. Wehenkel,「Extremely randomized trees」,Machine Learning,63(1),3-42,2006 年。
[2]Moosmann、F.、Triggs、B. 和 Jurie、F.,「Fast discriminative visual codebooks using randomized clustering forests」NIPS 2007
範例
>>> from sklearn.ensemble import RandomTreesEmbedding >>> X = [[0,0], [1,0], [0,1], [-1,0], [0,-1]] >>> random_trees = RandomTreesEmbedding( ... n_estimators=5, random_state=0, max_depth=1).fit(X) >>> X_sparse_embedding = random_trees.transform(X) >>> X_sparse_embedding.toarray() array([[0., 1., 1., 0., 1., 0., 0., 1., 1., 0.], [0., 1., 1., 0., 1., 0., 0., 1., 1., 0.], [0., 1., 0., 1., 0., 1., 0., 1., 0., 1.], [1., 0., 1., 0., 1., 0., 1., 0., 1., 0.], [0., 1., 1., 0., 1., 0., 0., 1., 1., 0.]])
- apply(X)[原始碼]#
將森林中的樹套用至 X,傳回葉索引。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}
輸入樣本。在內部,其 dtype 將會轉換為
dtype=np.float32
。如果提供稀疏矩陣,則會轉換為稀疏的csr_matrix
。
- 傳回值:
- X_leaves形狀為 (n_samples, n_estimators) 的 ndarray
針對 X 中的每個資料點 x 和森林中的每棵樹,傳回 x 最終所在的葉索引。
- decision_path(X)[原始碼]#
傳回森林中的決策路徑。
在 0.18 版中新增。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}
輸入樣本。在內部,其 dtype 將會轉換為
dtype=np.float32
。如果提供稀疏矩陣,則會轉換為稀疏的csr_matrix
。
- 傳回值:
- indicator形狀為 (n_samples, n_nodes) 的稀疏矩陣
傳回節點指示矩陣,其中非零元素表示樣本會經過節點。矩陣的格式為 CSR。
- n_nodes_ptr形狀為 (n_estimators + 1,) 的 ndarray
來自 indicator[n_nodes_ptr[i]:n_nodes_ptr[i+1]] 的欄位會提供第 i 個估計器的指示值。
- property estimators_samples_#
每個基本估計器的抽樣子集。
傳回動態產生的索引列表,識別用於擬合集成中每個成員的樣本,即袋內樣本。
注意:此列表會在每次呼叫屬性時重新建立,以減少物件的記憶體佔用空間,而不儲存取樣資料。因此,擷取此屬性可能會比預期的慢。
- property feature_importances_#
基於不純度的特徵重要性。
數值越高,表示特徵越重要。特徵的重要性計算為該特徵帶來的標準化準則總減少量。它也稱為 Gini 重要性。
警告:基於不純度的特徵重要性可能會誤導高基數特徵(許多唯一值)。請參閱
sklearn.inspection.permutation_importance
作為替代方案。- 傳回值:
- feature_importances_形狀為 (n_features,) 的 ndarray
除非所有樹都是僅由根節點組成的單節點樹,否則此陣列的值總和為 1,在這種情況下,它將是一個零陣列。
- fit(X, y=None, sample_weight=None)[原始碼]#
擬合估計器。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}
輸入樣本。使用
dtype=np.float32
可獲得最高效率。也支援稀疏矩陣,使用稀疏的csc_matrix
可獲得最高效率。- y已忽略
未使用,為 API 一致性而存在。
- sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None
樣本權重。如果為 None,則樣本會被平均加權。在每個節點中搜尋分割時,會忽略會建立淨零或負權重的子節點的分割。在分類的情況下,如果任何單一類別在任一子節點中帶有負權重,也會忽略分割。
- 傳回值:
- self物件
傳回實例本身。
- fit_transform(X, y=None, sample_weight=None)[原始碼]#
擬合估計器並轉換資料集。
- 參數:
- X形狀為 (n_samples, n_features) 的 {類陣列, 稀疏矩陣}
用於建構森林的輸入資料。使用
dtype=np.float32
可獲得最高效率。- y已忽略
未使用,為 API 一致性而存在。
- sample_weight形狀為 (n_samples,) 的類陣列,預設值為 None
樣本權重。如果為 None,則樣本會被平均加權。在每個節點中搜尋分割時,會忽略會建立淨零或負權重的子節點的分割。在分類的情況下,如果任何單一類別在任一子節點中帶有負權重,也會忽略分割。
- 傳回值:
- X_transformed形狀為 (n_samples, n_out) 的稀疏矩陣
已轉換的資料集。
- get_feature_names_out(input_features=None)[原始碼]#
取得轉換的輸出特徵名稱。
- 參數:
- input_features字串或 None 的類陣列,預設值為 None
僅用於使用
fit
中看到的名稱驗證特徵名稱。
- 傳回值:
- feature_names_out字串物件的 ndarray
已轉換的特徵名稱,格式為
randomtreesembedding_{tree}_{leaf}
,其中tree
是用於產生葉的樹,而leaf
是該樹中葉節點的索引。請注意,節點索引配置用於索引具有子節點(分割節點)和葉節點的節點。只有後者才能以輸出特徵的形式存在。因此,輸出特徵名稱中會遺失索引。
- get_metadata_routing()[原始碼]#
取得此物件的中繼資料路由。
請查看使用者指南,瞭解路由機制如何運作。
- 傳回值:
- routingMetadataRequest
一個封裝路由資訊的
MetadataRequest
。
- get_params(deep=True)[來源]#
取得此估計器的參數。
- 參數:
- deepbool,預設值為 True
如果為 True,將返回此估計器和包含的子物件(為估計器)的參數。
- 傳回值:
- paramsdict
參數名稱對應到它們的值。
- set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') RandomTreesEmbedding [來源]#
請求傳遞到
fit
方法的中繼資料。請注意,只有當
enable_metadata_routing=True
時,此方法才相關(請參閱sklearn.set_config
)。有關路由機制如何運作,請參閱 使用者指南。每個參數的選項為
True
:請求中繼資料,並在提供時傳遞給fit
。如果未提供中繼資料,則會忽略該請求。False
:不請求中繼資料,並且 meta-estimator 不會將其傳遞給fit
。None
:不請求中繼資料,如果使用者提供中繼資料,meta-estimator 會引發錯誤。str
:中繼資料應使用此給定的別名而不是原始名稱傳遞給 meta-estimator。
預設值 (
sklearn.utils.metadata_routing.UNCHANGED
) 保留現有的請求。這允許您更改某些參數的請求,而不是其他參數。於 1.3 版本新增。
注意
僅當此估計器用作 meta-estimator 的子估計器時,此方法才相關,例如在
Pipeline
中使用。否則,它沒有任何效果。- 參數:
- sample_weightstr、True、False 或 None,預設值為 sklearn.utils.metadata_routing.UNCHANGED
fit
中sample_weight
參數的中繼資料路由。
- 傳回值:
- self物件
更新後的物件。
- set_output(*, transform=None)[來源]#
設定輸出容器。
有關如何使用 API 的範例,請參閱 介紹 set_output API。
- 參數:
- transform{“default”, “pandas”, “polars”},預設值為 None
設定
transform
和fit_transform
的輸出。"default"
:轉換器的預設輸出格式"pandas"
:DataFrame 輸出"polars"
:Polars 輸出None
:轉換設定保持不變
於 1.4 版本新增:新增了
"polars"
選項。
- 傳回值:
- self估計器實例
估計器實例。