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_R
和N_t_L
都指的是加权和,如果传递了sample_weight
。Added in version 0.19.
- sparse_outputbool, default=True
是否返回默认行为的稀疏CSR矩阵,或者返回与密集管道操作符兼容的密集数组。
- n_jobsint, default=None
并行运行的作业数量。
fit
,transform
,decision_path
和apply
都在树中并行化。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_
数组列表子集,每个基估计器绘制的样本。
- estimator_
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
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed tofit
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it tofit
.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 infit
.
- Returns:
- selfobject
The updated object.
- set_output(*, transform=None)#
设置输出容器。
请参阅 介绍 set_output API 以了解如何使用API的示例。
- Parameters:
- transform{“default”, “pandas”, “polars”}, 默认=None
配置
transform
和fit_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) 的稀疏矩阵
转换后的数据集。