隨機樹嵌入#

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,則 NN_tN_t_RN_t_L 都表示加權總和。

新增於版本 0.19。

sparse_outputbool,預設值=True

是否傳回稀疏 CSR 矩陣(預設行為),還是傳回與密集管線運算符相容的密集陣列。

n_jobsint,預設值=None

平行執行的任務數量。fittransformdecision_pathapply 都會在樹之間平行處理。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_陣列列表

每個基本估計器的抽樣子集。

另請參閱

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

fitsample_weight 參數的中繼資料路由。

傳回值:
self物件

更新後的物件。

set_output(*, transform=None)[來源]#

設定輸出容器。

有關如何使用 API 的範例,請參閱 介紹 set_output API

參數:
transform{“default”, “pandas”, “polars”},預設值為 None

設定 transformfit_transform 的輸出。

  • "default":轉換器的預設輸出格式

  • "pandas":DataFrame 輸出

  • "polars":Polars 輸出

  • None:轉換設定保持不變

於 1.4 版本新增:新增了 "polars" 選項。

傳回值:
self估計器實例

估計器實例。

set_params(**params)[來源]#

設定此估計器的參數。

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

參數:
**paramsdict

估計器參數。

傳回值:
self估計器實例

估計器實例。

transform(X)[來源]#

轉換資料集。

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

要轉換的輸入資料。使用 dtype=np.float32 可獲得最大效率。也支援稀疏矩陣,使用稀疏 csr_matrix 可獲得最大效率。

傳回值:
X_transformed形狀為 (n_samples, n_out) 的稀疏矩陣

已轉換的資料集。