【问题标题】:Adding correct labels to decision trees向决策树添加正确的标签
【发布时间】:2019-09-19 20:02:36
【问题描述】:

我在机器学习项目中使用随机森林回归器。为了更好地理解预测的逻辑,我想可视化一些决策树并检查何时使用哪些特征。

为此,我编写了以下代码:

from sklearn.tree import export_graphviz
from subprocess import call
from IPython.display import Image

# Select one estimator from the Random Forests
estimator = best_estimators_regr['RandomForestRegressor'][0].estimators_[0]

export_graphviz(estimator, out_file=path+'tree.dot', 
           rounded=True, proportion=False, 
           precision=2, filled=True)
call(['dot', '-Tpng', path+'tree.dot', '-o', path+'tree.png', '-Gdpi=600'])
Image(filename=path+'tree.png')

问题是我在训练模型的时候使用了max_features参数,所以不知道每棵树都用到了哪些特征。因此,在绘制一棵树时,我只需得到X[some_number]。这个数字是否对应于 original 数据集中的列?如果不是,我如何告诉它使用列的名称而不是数字?

【问题讨论】:

    标签: scikit-learn decision-tree


    【解决方案1】:

    RandomForestClassifier 中的'max_features' 参数用于一次获取特征数量以找到最佳分割。该参数将传递给所有单独的估计器 (DecisionTreeClassifier)。基本DecisionTreeClassifier 对象都接受整个数据(其中样本是从训练数据中采样的,但所有列特征都传递给每棵树)。特征排序决定于单个DecisionTreeClassifier 对象。所以不用担心。

    您可以只使用export_graphviz 中的feature_names 参数为您的所有功能传递每个功能的名称。

    【讨论】:

    • 如果我理解正确的话,我可以简单地将我的DataFrame中的.columns参数传递给feature_names,对吧?谢谢。
    猜你喜欢
    • 2020-04-02
    • 1970-01-01
    • 2015-01-08
    • 2018-12-31
    • 2018-02-10
    • 2012-01-30
    • 2018-10-21
    • 2018-08-25
    • 2014-05-14
    相关资源
    最近更新 更多