向决策树添加正确的标签
Adding correct labels to decision trees
我在机器学习项目中使用随机森林回归器。为了更好地理解预测的逻辑,我想可视化一些决策树并检查何时使用了哪些特征。
为此,我编写了以下代码:
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]
。这个数字是否对应于原始数据集中的列?如果不是,我如何告诉它使用列的名称而不是数字?
RandomForestClassifier
中的'max_features'
参数用于获取一次特征的个数,从而找到最佳分割。该参数被传递给所有单独的估计器 (DecisionTreeClassifier
)。基础 DecisionTreeClassifier
对象都接受整个数据(其中样本是从训练数据中采样的,但所有列特征都传递给每棵树)。特征排序由单个 DecisionTreeClassifier
对象决定。所以不用担心。
您可以只使用 export_graphviz
中的 feature_names
参数来为您的所有功能传递每个功能的名称。
我在机器学习项目中使用随机森林回归器。为了更好地理解预测的逻辑,我想可视化一些决策树并检查何时使用了哪些特征。
为此,我编写了以下代码:
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]
。这个数字是否对应于原始数据集中的列?如果不是,我如何告诉它使用列的名称而不是数字?
RandomForestClassifier
中的'max_features'
参数用于获取一次特征的个数,从而找到最佳分割。该参数被传递给所有单独的估计器 (DecisionTreeClassifier
)。基础 DecisionTreeClassifier
对象都接受整个数据(其中样本是从训练数据中采样的,但所有列特征都传递给每棵树)。特征排序由单个 DecisionTreeClassifier
对象决定。所以不用担心。
您可以只使用 export_graphviz
中的 feature_names
参数来为您的所有功能传递每个功能的名称。