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,则N、N_t、N_t_R和N_t_L都指的是加权和。Added in version 0.19.
- sparse_outputbool, default=True
是否返回稀疏CSR矩阵(默认行为),或者返回与密集管道操作兼容的密集数组。
- n_jobsint, default=None
并行运行的作业数量。
fit、transform、decision_path和apply都在树之间并行化。除非在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
ExtraTreeRegressorinstances 已拟合子估计器的集合。
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每个基本估计器抽取的样本子集。
- estimator_
另请参阅
ExtraTreesClassifierExtra-Trees 分类器。
ExtraTreesRegressorExtra-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
配置
transform和fit_transform的输出。"default": 转换器的默认输出格式"pandas": DataFrame 输出"polars": Polars 输出None: 转换配置保持不变
1.4 版本新增: 添加了
"polars"选项。
- 返回:
- selfestimator instance
估计器实例。