【问题标题】:Random Forest Regressor, trying to get trees text out随机森林回归器,试图将树木文本输出
【发布时间】:2020-08-28 11:33:59
【问题描述】:
from sklearn.ensemble import RandomForestRegressor
model=RandomForestRegressor()
model.fit(X_train,y_train)
model.score(X_test,y_test)

feature_list = list(X.columns)


r = export_text(model, feature_names=feature_list,
            decimals=0, show_weights=True)
print(r)

AttributeError: 'RandomForestRegressor' object has no attribute 'tree_'

知道我在这里缺少什么吗?我正在尝试从随机森林回归器中获取树文本数据

【问题讨论】:

    标签: python scikit-learn random-forest


    【解决方案1】:

    RandomForestRegressor 是通过拟合多棵树来训练的,因此尝试从分类器中直接 export_text 是没有意义的。事实上,正如错误所指出的,它没有tree_ 属性。请注意,正如docs 中所述,它用于:

    构建一个显示决策树

    规则的文本报告

    export_text 与决策树一起使用,因此,如果您改为使用 RandomForest 的估计器之一作为 model 参数,它将起作用:

    from sklearn.ensemble import RandomForestClassifier
    from sklearn.tree import export_text
    from sklearn.datasets import load_iris
    iris = load_iris()
    X = iris['data']
    y = iris['target']
    rf = RandomForestClassifier(random_state=0, max_depth=2)
    
    rf.fit(X, y)
    r = export_text(rf.estimators_[0], feature_names=iris['feature_names'])
    print(r)
    
    |--- petal width (cm) <= 0.75
    |   |--- class: 0.0
    |--- petal width (cm) >  0.75
    |   |--- petal length (cm) <= 4.85
    |   |   |--- class: 1.0
    |   |--- petal length (cm) >  4.85
    |   |   |--- class: 2.0
    

    当然,这只是分类器已拟合的估计量之一,并不代表分类器遵循的标准,即多棵树的ensemble

    【讨论】:

      猜你喜欢
      • 2019-04-20
      • 2019-10-23
      • 2018-12-02
      • 2023-03-14
      • 2013-12-04
      • 2017-12-24
      • 2019-12-25
      • 2019-12-06
      • 2019-08-08
      相关资源
      最近更新 更多