sklearn.ensemble.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, min_impurity_split=None, sparse_output=True, n_jobs=None, random_state=None, verbose=0, warm_start=False)

[源码]

完全随机树的集成。

数据集到高维稀疏表示的无监督转换。数据点是根据它被分类到的每棵树的相应叶中来编码的。使用one-hot编码的叶子,这将导致二进制编码的数量与森林中的树一样多。

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

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

参数 说明
n_estimators int, default=100
森林中树木的数量。
在版本0.22中更改:默认值n_estimators在0.22中从10更改为100。
max_depth int, default=None
树的最大深度。如果为None,则将节点展开,直到所有叶子都是纯净的,或者直到所有叶子都包含少于min_samples_split个样本。
min_samples_split int or float, default=2
分割一个内部节点所需的最小样本数:
- 如果为int,则认为min_samples_leaf是最小值。
- 如果为float,min_samples_leaf则为分数, 是每个节点的最小样本数。
ceil(min_samples_leaf * n_samples)
在版本0.18中更改:添加了分数的浮点值。
min_samples_leaf int or float, default=1
一个叶节点上所需的最小样本数。只有当它在每个左右分支中都留下至少min_samples_leaf训练样本时,任何深度的分割点才会被考虑。这可能会产生平滑模型的效果,特别是在回归中。
- 如果为int,则认为min_samples_leaf是最小值。
- 如果为float,min_samples_leaf则为分数, 是每个节点的最小样本数。
ceil(min_samples_leaf * n_samples)
在版本0.18中更改:添加了分数的浮点值。
min_weight_fraction_leaf float, default=0.0
一个叶节点上所需的(所有输入样本的)总权重的最小加权分数。当不提供sample_weight时,样本的权重相等。
max_leaf_nodes int, default=None
max_leaf_nodes以最好的方式进行“种树”。杂质的相对减少的节点被当作最佳节点。如果为None,则叶节点数不受限制。
min_impurity_decrease float, 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数,是右子节点中的样本数。
NN_tN_t_R并且N_t_L都指的是加权和,如果sample_weight获得通过。
版本0.19中的新功能
min_impurity_split float, default=None
树提升提前停止的阈值。如果节点的杂质高于阈值,则该节点将分裂,否则为叶。
- 从版本0.19min_impurity_split开始不推荐使用:在版本0.19中不再推荐使用 min_impurity_decrease。的默认值 min_impurity_split在0.23中从1e-7更改为0,并将在0.25中删除。使用min_impurity_decrease代替。
sparse_output bool, default=False
是否返回稀疏CSR矩阵(默认行为),或返回与密集管道操作符兼容的密集数组。
n_jobs int, default=None
要并行运行的作业的数量。fit, predict, decision_pathapply都在树中并行化。除非在一个joblib.parallel_backend的内容中,否则Nonejoblib中的表示是1。-1表示使用所有处理器。有关更多详细信息,请参见Glossary
random_state int, RandomState, default=None
控制用于拟合树的随机y的生成,以及绘制分割树节点上每个特征。
有关更多详细信息,请参见Glossary
verbose int, default=0
在拟合和预测时控制冗余程度。
warm_start bool, default=False
当设置为True时,重用前面调用的解决方案来适应并向集成添加更多的评估器,否则,只会拟合完整的新森林。有关更多详细信息,请参见Glossary
属性 说明
estimators_ list of DecisionTreeRegressor
拟合的子估计器的集合。

参考文献

  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) 将森林中的树应用于X,返回叶索引。
decision_path(X) 返回森林的决策路径。
fit(X[, y, sample_weight]) 拟合估计器。
fit_transform(X[, y, sample_weight]) 拟合估计器和变换数据集。
get_params([deep]) 获取这个估计器的参数。
set_params(**params) 设置这个估计器的参数。
transform(X) 转化数据集。
__init__(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, min_impurity_split=None, sparse_output=True, n_jobs=None, random_state=None, verbose=0, warm_start=False)

[源码]

初始化self。有关准确的签名,请参见help(type(self))

apply(X)

[源码]

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

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
输入样本。在内部,它的dtype将被转换为dtype=np.float32。如果提供了一个稀疏矩阵,它将被转换为一个csr_matrix
返回值 说明
X_leaves ndarray of shape (n_samples, n_estimators)
对于X中的每个数据点x和森林中的每棵树,返回x最终所在的叶子的索引。
decision_path(X)

[源码]

返回森林中的决策路径。

版本0.18中的新功能。

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
输入样本。在内部,它的dtype将被转换为dtype=np.float32。如果提供了一个稀疏矩阵,它将被转换为一个csr_matrix
返回值 说明
indicator sparse matrix of shape (n_samples, n_nodes)
返回一个节点指示符矩阵,其中非零元素表示样本经过节点。矩阵为CSR格式。
n_nodes_ptr ndarray of shape (n_estimators + 1,)
列元素来自指示符[n_nodes_ptr[i]:n_nodes_ptr[i+1]]给出第i个估计器的指示值。
property feature_importances_

基于杂质的功能的重要性。

越高,功能越重要。特征的重要性计算为该特征带来的标准的(标准化)总缩减。这也被称为基尼重要性。

警告:基于杂质的特征重要性可能会误导高基数特征(许多唯一值)。另见 sklearn.inspection.permutation_importance

返回值 说明
feature_importances_ ndarray of shape (n_features,)
除非所有树都是仅由根节点组成的单节点树,否则此数组的值总计为1,在这种情况下,它将是零数组。
fit(X, y, sample_weight = None)

[源码]

拟合估计器。

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
输入样本。在内部,它的dtype将被转换为dtype=np.float32。如果提供了一个稀疏矩阵,它将被转换为一个csr_matrix
y array-like of shape (n_samples,) or (n_samples, n_outputs)
目标值(分类中的类标签,回归中的实数)。
sample_weight array-like of shape (n_samples,), default=None
样本权重。如果没有,那么样本的权重相等。当在每个节点中搜索分割时,将忽略创建具有净零权值或负权值的子节点的分割。在分类的情况下,如果分割会导致任何一个类在任一子节点中具有负权值,那么分割也将被忽略。
返回值 说明
self object
fit_transform(X, y=None, sample_weight=None)

[源码]

拟合估计量和变换数据集。

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
输入样本。在内部,它的dtype将被转换为dtype=np.float32。如果提供了一个稀疏矩阵,它将被转换为一个csr_matrix
y Ignored
未使用,按照约定呈现API一致性。
sample_weight array-like of shape (n_samples,), default=None
样本权重。如果没有,那么样本的权重相等。当在每个节点中搜索分割时,将忽略创建具有净零权值或负权值的子节点的分割。在分类的情况下,如果分割会导致任何一个类在任一子节点中具有负权值,那么分割也将被忽略。
返回值 说明
X_transformed sparse matrix of shape (n_samples, n_out)
转化后的数据集。
get_params(deep=True)

[源码]

得到估计器的参数。

参数 说明
deep bool, default = True
如果为真,将返回此估计量的参数以及包含作为估计量的子对象。
返回值 说明
params mapping of string to any
名称参数及他们所映射的值。
set_params(**params)

[源码]

设置该估计器的参数。

该方法适用于简单估计器和嵌套对象(如pipline)。后者具有形式为<component>_<parameter>的参数,这样就可以更新嵌套对象的每个组件。

参数 说明
**params dict
估计器参数
返回值 说明
self object
估计实例。
transform(X)

[源码]

转化数据集。

参数 说明
X {array-like, sparse matrix} of shape (n_samples, n_features)
输入样本。在内部,它的dtype将被转换为dtype=np.float32。如果提供了一个稀疏矩阵,它将被转换为一个csr_matrix
返回值 说明
X_transformed sparse matrix of shape (n_samples, n_out)
转化后的数据集