You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何查看Scikit-learn中随机森林各树的Bootstrapped采样数据集?

查看Scikit-learn随机森林中单棵树的Bootstrapped数据集

获取采样的样本行(Bootstrap样本)

Scikit-learn的随机森林模型并没有直接暴露每棵树的Bootstrap样本索引,但可以通过间接方法筛选出被采样的样本行:

  • 借助模型的estimators_属性获取单棵决策树,再用apply()方法区分被采样/未被采样的样本:
    from sklearn.ensemble import RandomForestClassifier
    from sklearn.datasets import load_iris
    import numpy as np
    
    # 训练随机森林示例
    X, y = load_iris(return_X_y=True)
    rf = RandomForestClassifier(n_estimators=3, random_state=42)
    rf.fit(X, y)
    
    # 提取第一棵树的Bootstrap样本索引
    target_tree = rf.estimators_[0]
    # apply()返回样本在树中的叶节点索引,未被采样的样本返回-1
    leaf_ids = target_tree.apply(X)
    bootstrap_sample_indices = np.where(leaf_ids != -1)[0]
    print("第一棵树使用的样本行索引:", bootstrap_sample_indices)
    
  • 逻辑:未被Bootstrap采样选中的样本,不会参与决策树构建,因此在apply()中会返回-1,以此可筛选出被采样的样本。

获取采样的特征子集

随机森林构建每棵树时会随机选择特征子集,可通过决策树的结构直接提取:

  • 利用树的tree_.feature属性,过滤掉代表叶子节点的-2值,去重后得到该树用到的特征索引:
    # 提取第一棵树用到的特征
    used_feature_indices = np.unique(target_tree.tree_.feature[target_tree.tree_.feature != -2])
    print("第一棵树使用的特征索引:", used_feature_indices)
    

补充说明

  • Bootstrap采样是有放回采样,所以得到的样本行中可能存在重复的原始样本。
  • 上述方法适配Scikit-learn 0.22及以上版本,不同版本API可能存在细微差异。

内容的提问来源于stack exchange,提问作者user

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 07:55:41