RandomTreesEmbedding#

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)[source]#

完全随机树的集合。

将数据集转换为高维稀疏表示的无监督转换器。根据每个数据点被分类到每棵树的哪个叶子节点中,对其进行编码。使用叶子节点的一热编码(one-hot encoding),这将产生一个二进制编码,其中1的数量与森林中的树的数量相同。

所得表示的维度为 n_out <= n_estimators * max_leaf_nodes。如果 max_leaf_nodes == None,则叶子节点数量最多为 n_estimators * 2 ** max_depth

有关将随机树嵌入应用于非线性分类的示例,请参阅 使用全随机树进行哈希特征转换

请在 用户指南 中阅读更多内容。

参数:
n_estimatorsint, default=100

森林中树的数量。

版本 0.22 中更改: n_estimators 的默认值从 10 更改为 100。

max_depthint, default=5

每棵树的最大深度。如果为None,则节点会一直扩展,直到所有叶子都是纯净的,或者所有叶子包含的样本数少于min_samples_split。

min_samples_splitint or float, default=2

分割内部节点所需的最小样本数。

  • 如果为 int,则将 min_samples_split 视为最小数量。

  • 如果为浮点数,则 min_samples_split 是一个比例,ceil(min_samples_split * n_samples) 是每个分裂所需的最小样本数。

版本 0.18 更改:添加了分数浮点值。

min_samples_leafint or float, default=1

叶节点所需的最小样本数。只有当分割点在左右分支中都留下至少 min_samples_leaf 个训练样本时,才会考虑该分割点。这可能具有平滑模型的效果,尤其是在回归中。

  • 如果为 int,则将 min_samples_leaf 视为最小数量。

  • 如果为浮点数,则 min_samples_leaf 是一个比例,ceil(min_samples_leaf * n_samples) 是每个节点所需的最小样本数。

版本 0.18 更改:添加了分数浮点值。

min_weight_fraction_leaffloat, default=0.0

叶节点所需的总权重(所有输入样本的权重总和)的最小加权分数。如果未提供 sample_weight,则样本具有相等的权重。

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 是右子节点中的样本数。

如果传递了 sample_weight,则 NN_tN_t_RN_t_L 都指的是加权和。

Added in version 0.19.

sparse_outputbool, default=True

是否返回稀疏CSR矩阵(默认行为),或者返回与密集管道操作兼容的密集数组。

n_jobsint, default=None

并行运行的作业数量。fittransformdecision_pathapply 都在树之间并行化。除非在 joblib.parallel_backend 上下文中,None 表示1。-1 表示使用所有处理器。有关详细信息,请参阅 词汇表

random_stateint, RandomState instance or None, default=None

控制用于拟合树的随机 y 的生成,以及在树节点处为每个特征抽取的分裂。有关详细信息,请参阅 词汇表

verboseint, default=0

控制拟合和预测时的详细程度。

warm_startbool, default=False

当设置为 True 时,重用上次调用 fit 的结果并向集成中添加更多估计器,否则,拟合一个全新的森林。有关详细信息,请参阅词汇表拟合额外的树

属性:
estimator_ExtraTreeRegressor 实例

用于创建已拟合子估计器集合的子估计器模板。

版本 1.2 中新增: base_estimator_ 已重命名为 estimator_

estimators_list of ExtraTreeRegressor instances

已拟合子估计器的集合。

feature_importances_ndarray of shape (n_features,)

基于杂质的特征重要性。

n_features_in_int

拟合 期间看到的特征数。

0.24 版本新增。

feature_names_in_shape 为 (n_features_in_,) 的 ndarray

fit 期间看到的特征名称。仅当 X 具有全部为字符串的特征名称时才定义。

1.0 版本新增。

n_outputs_int

执行 fit 时的输出数。

one_hot_encoder_OneHotEncoder instance

用于创建稀疏嵌入的一热编码器。

estimators_samples_list of arrays

每个基本估计器抽取的样本子集。

另请参阅

ExtraTreesClassifier

Extra-Trees 分类器。

ExtraTreesRegressor

Extra-Trees 回归器。

RandomForestClassifier

随机森林分类器。

RandomForestRegressor

随机森林回归器。

sklearn.tree.ExtraTreeClassifier

非常随机的树分类器。

sklearn.tree.ExtraTreeRegressor

非常随机的树回归器。

References

[1]

P. Geurts, D. Ernst., and L. Wehenkel, “Extremely randomized trees”, Machine Learning, 63(1), 3-42, 2006.

[2]

Moosmann, F. and Triggs, B. and 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)[source]#

将森林中的树应用于 X,返回叶子索引。

参数:
Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

输入样本。在内部,其 dtype 将转换为 dtype=np.float32。如果提供了稀疏矩阵,它将转换为稀疏 csr_matrix

返回:
X_leavesndarray of shape (n_samples, n_estimators)

对于 X 中的每个数据点 x 和森林中的每棵树,返回 x 最终所在的叶子的索引。

decision_path(X)[source]#

返回森林中的决策路径。

版本 0.18 新增。

参数:
Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

输入样本。在内部,其 dtype 将转换为 dtype=np.float32。如果提供了稀疏矩阵,它将转换为稀疏 csr_matrix

返回:
indicatorsparse matrix of shape (n_samples, n_nodes)

返回节点指示矩阵,其中非零元素指示样本通过的节点。矩阵为 CSR 格式。

n_nodes_ptrndarray of shape (n_estimators + 1,)

indicator[n_nodes_ptr[i]:n_nodes_ptr[i+1]] 中的列给出第 i 个估计器的指示值。

fit(X, y=None, sample_weight=None)[source]#

拟合估计器。

参数:
Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

输入样本。使用 dtype=np.float32 可获得最大效率。也支持稀疏矩阵,使用稀疏 csc_matrix 可获得最大效率。

y被忽略

未使用,按照惯例为保持 API 一致性而存在。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

样本权重。如果为 None,则样本权重相等。在每个节点中搜索分割时,将忽略会创建净零或负权重子节点的分割。在分类的情况下,如果分割会导致任一子节点中的任何单个类具有负权重,也会忽略该分割。

返回:
selfobject

返回实例本身。

fit_transform(X, y=None, sample_weight=None)[source]#

拟合估计器并转换数据集。

参数:
Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

用于构建森林的输入数据。使用 dtype=np.float32 可获得最大效率。

y被忽略

未使用,按照惯例为保持 API 一致性而存在。

sample_weightshape 为 (n_samples,) 的 array-like, default=None

样本权重。如果为 None,则样本权重相等。在每个节点中搜索分割时,将忽略会创建净零或负权重子节点的分割。在分类的情况下,如果分割会导致任一子节点中的任何单个类具有负权重,也会忽略该分割。

返回:
X_transformedsparse matrix of shape (n_samples, n_out)

转换后的数据集。

get_feature_names_out(input_features=None)[source]#

获取转换的输出特征名称。

参数:
input_featuresarray-like of str or None, default=None

仅用于使用在 fit 中看到的名称来验证特征名称。

返回:
feature_names_outstr 对象的 ndarray

转换后的特征名称,格式为 randomtreesembedding_{tree}_{leaf},其中 tree 是用于生成叶子的树,leaf 是该树中叶子节点的索引。请注意,节点索引方案用于索引具有子节点的节点(分裂节点)和叶子节点。只有后者才能作为输出特征存在。因此,输出特征名称中存在缺失索引。

get_metadata_routing()[source]#

获取此对象的元数据路由。

请查阅 用户指南,了解路由机制如何工作。

返回:
routingMetadataRequest

封装路由信息的 MetadataRequest

get_params(deep=True)[source]#

获取此估计器的参数。

参数:
deepbool, default=True

如果为 True,将返回此估计器以及包含的子对象(如果它们是估计器)的参数。

返回:
paramsdict

参数名称映射到其值。

set_fit_request(*, sample_weight: bool | None | str = '$UNCHANGED$') RandomTreesEmbedding[source]#

配置是否应请求元数据以传递给 fit 方法。

请注意,此方法仅在以下情况下相关:此估计器用作 元估计器 中的子估计器,并且通过 enable_metadata_routing=True 启用了元数据路由(请参阅 sklearn.set_config)。请查看 用户指南 以了解路由机制的工作原理。

每个参数的选项如下:

  • True:请求元数据,如果提供则传递给 fit。如果未提供元数据,则忽略该请求。

  • False:不请求元数据,元估计器不会将其传递给 fit

  • None:不请求元数据,如果用户提供元数据,元估计器将引发错误。

  • str:应将元数据以给定别名而不是原始名称传递给元估计器。

默认值 (sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。

在版本 1.3 中新增。

参数:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

fit 方法中 sample_weight 参数的元数据路由。

返回:
selfobject

更新后的对象。

set_output(*, transform=None)[source]#

设置输出容器。

有关如何使用 API 的示例,请参阅引入 set_output API

参数:
transform{“default”, “pandas”, “polars”}, default=None

配置 transformfit_transform 的输出。

  • "default": 转换器的默认输出格式

  • "pandas": DataFrame 输出

  • "polars": Polars 输出

  • None: 转换配置保持不变

1.4 版本新增: 添加了 "polars" 选项。

返回:
selfestimator instance

估计器实例。

set_params(**params)[source]#

设置此估计器的参数。

此方法适用于简单的估计器以及嵌套对象(如 Pipeline)。后者具有 <component>__<parameter> 形式的参数,以便可以更新嵌套对象的每个组件。

参数:
**paramsdict

估计器参数。

返回:
selfestimator instance

估计器实例。

transform(X)[source]#

转换数据集。

参数:
Xshape 为 (n_samples, n_features) 的 {array-like, sparse matrix}

要转换的输入数据。使用 dtype=np.float32 可获得最大效率。也支持稀疏矩阵,使用稀疏 csr_matrix 可获得最大效率。

返回:
X_transformedsparse matrix of shape (n_samples, n_out)

转换后的数据集。