Random Forest Regressor, trying to get trees text out

China☆狼群 提交于 2020-05-17 07:46:09

问题


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_'

Any idea what I'm missing here? I am trying to get tree text data out of a random forest regressor


回答1:


RandomForestRegressor is trained by fitting multiple trees, hence it doesn't make sense to try to directly export_text from the classifier. Indeed as the error points out, it does not have the attribute tree_. Note that, as mentioned in the docs it is used to:

Build a text report showing the rules of a decision tree

export_text works with decision trees, so if you instead used one of the RandomForest's estimators as model argument it would work:

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

Though of course this is only one of the estimators that have been fit by the classifier, and does not represent the criteria followed by the classifier, which is an ensemble of multiple trees.



来源:https://stackoverflow.com/questions/61754908/random-forest-regressor-trying-to-get-trees-text-out

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!