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)#

一个完全随机树的集合。

一个将数据集转换为高维稀疏表示的无监督变换。一个数据点根据它被排序到每棵树的哪个叶子中进行编码。使用叶子的独热编码,这导致了一个二进制编码,其中1的数量与森林中的树的数量相同。

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

更多信息请参阅 用户指南

Parameters:
n_estimatorsint, default=100

森林中树的数量。

Changed in version 0.22: 在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 视为最小数量。

  • 如果是float,则 min_samples_split 是一个分数, ceil(min_samples_split * n_samples) 是每个拆分的最小样本数。

Changed in version 0.18: 增加了分数值。

min_samples_leafint or float, default=1

叶子节点所需的最小样本数。任何深度的拆分点只有在每个左分支和右分支中留下至少 min_samples_leaf 训练样本时才会被考虑。这可能会对模型产生平滑效果,特别是在回归中。

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

  • 如果是float,则 min_samples_leaf 是一个分数, ceil(min_samples_leaf * n_samples) 是每个节点的最小样本数。

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

N , N_t , N_t_RN_t_L 都指的是加权和,如果传递了 sample_weight

Added in version 0.19.

sparse_outputbool, default=True

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

n_jobsint, default=None

并行运行的作业数量。fit , transform , decision_pathapply 都在树中并行化。 None 意味着1,除非在 joblib.parallel_backend 上下文中。 -1 意味着使用所有处理器。更多详情请参阅 Glossary

random_stateint, RandomState instance or None, default=None

控制用于拟合树的随机 y 的生成以及树节点中每个特征的拆分。更多详情请参阅 Glossary

verboseint, default=0

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

warm_startbool, default=False

设置为 True 时,重用上一次调用 fit 的解决方案,并在集合中添加更多估计器,否则,拟合一个全新的森林。更多详情请参阅 Glossary拟合额外的树

Attributes:
estimator_ExtraTreeRegressor 实例

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

Added in version 1.2: base_estimator_ 被重命名为 estimator_

estimators_ExtraTreeRegressor 实例列表

已拟合子估计器的集合。

feature_importances_ndarray of shape (n_features,)

杂质特征重要性。

n_features_in_int

fit 期间看到的特征数量。

Added in version 0.24.

feature_names_in_ndarray of shape ( n_features_in_ ,)

fit 期间看到的特征名称。仅当 X 中的特征名称均为字符串时定义。

Added in version 1.0.

n_outputs_int

执行 fit 时的输出数量。

one_hot_encoder_OneHotEncoder 实例

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

estimators_samples_数组列表

子集,每个基估计器绘制的样本。

See also

ExtraTreesClassifier

一个额外的树分类器。

ExtraTreesRegressor

一个额外的树回归器。

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

Examples

>>> 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,返回叶子索引。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

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

Returns:
X_leavesndarray,形状为 (n_samples, n_estimators)

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

decision_path(X)#

返回森林中的决策路径。

Added in version 0.18.

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

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

Returns:
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_#

杂质特征重要性。

数值越高,特征越重要。 特征的重要性计算为其带来的准则总减少量的(归一化)值。它也被称为基尼重要性。

警告:基于杂质的特征重要性对于高基数特征(许多唯一值)可能会产生误导。请参阅 sklearn.inspection.permutation_importance 作为替代方法。

Returns:
feature_importances_ndarray of shape (n_features,)

该数组的值总和为1,除非所有树都是单节点树,仅由根节点组成,在这种情况下,它将是一个零数组。

fit(X, y=None, sample_weight=None)#

拟合估计器。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

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

y忽略

未使用,为了保持API一致性而存在。

sample_weightarray-like,形状为 (n_samples,),默认=None

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

Returns:
selfobject

返回实例本身。

fit_transform(X, y=None, sample_weight=None)#

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

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

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

y忽略

未使用,为了保持API一致性而存在。

sample_weight形状为 (n_samples,) 的类数组,默认=None

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

Returns:
X_transformed形状为 (n_samples, n_out) 的稀疏矩阵

转换后的数据集。

get_feature_names_out(input_features=None)#

获取变换后的输出特征名称。

Parameters:
input_features字符串的数组或None,默认=None

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

Returns:
feature_names_out字符串对象的ndarray

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

get_metadata_routing()#

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

请查看 用户指南 以了解路由机制的工作原理。

Returns:
routingMetadataRequest

MetadataRequest 封装的 路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, 默认=True

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

Returns:
paramsdict

参数名称映射到它们的值。

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

Request metadata passed to the fit method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to fit if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to fit .

  • None : metadata is not requested, and the meta-estimator will raise an error if the user provides it.

  • str : metadata should be passed to the meta-estimator with this given alias instead of the original name.

The default ( sklearn.utils.metadata_routing.UNCHANGED ) retains the existing request. This allows you to change the request for some parameters and not others.

Added in version 1.3.

Note

This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a Pipeline . Otherwise it has no effect.

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

Metadata routing for sample_weight parameter in fit .

Returns:
selfobject

The updated object.

set_output(*, transform=None)#

设置输出容器。

请参阅 介绍 set_output API 以了解如何使用API的示例。

Parameters:
transform{“default”, “pandas”, “polars”}, 默认=None

配置 transformfit_transform 的输出。

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

  • "pandas" : DataFrame 输出

  • "polars" : Polars 输出

  • None : 转换配置不变

Added in version 1.4: "polars" 选项已添加。

Returns:
self估计器实例

估计器实例。

set_params(**params)#

设置此估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

transform(X)#

转换数据集。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

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

Returns:
X_transformed形状为 (n_samples, n_out) 的稀疏矩阵

转换后的数据集。