我在Python中使用scikit-learn运行<button @click="review.isActive = true">
。因为我想可视化随机森林以实现不同功能之间的关联,所以我使用RandomForestClassifier()
来实现此目标。
export_graphviz()
但是,与决策树不同,随机森林将产生许多树,这取决于estimator1 = best_model1.estimators_[0]
from sklearn.tree import export_graphviz
export_graphviz(estimator1,
'tree_from_optimized_forest.dot',
rounded = True,
feature_names=X_train.columns,
class_names = ["No", "Yes"],
filled = True)
from subprocess import call
call(['dot', '-Tpng', 'tree_from_optimized_forest.dot', '-o', 'tree_from_optimized_forest.png', '-Gdpi=200'])
from IPython.display import Image
Image('tree_from_optimized_forest.png', "w")
中n_estimators
的数量。
RandomForestClassifier()
此外,由于best_model1 = RandomForestClassifier(n_estimators= 100,
criterion='gini',
random_state= 42,
)
使用所有样本仅生成一棵树,因此我们可以直接解释这棵树上的结果。
相反,Random Forests受过训练,可以制作几棵不同的树,然后在这些树中投票决定结果。另外,这些树的内容是不同的,因为随机森林具有自举,装袋,袋装...等方法。
因此,我想问一问,如果仅根据DecisionTreeClassifier()
的结果来可视化其中一棵树,该树是否具有一定的参考值?
我可以直接解释这棵树的内容作为整体数据的分析结果吗?如果不是,RandomForestClassifier()
是否是通过可视化图像分析特征之间相关性的唯一方法?
非常感谢!
答案 0 :(得分:0)
在机器学习中,模型的可解释性和复杂性之间始终存在这种关系,而您的帖子与此直接相关。
决策树是一些非常简单但需要大量解释的模型,但是由于它们不够复杂(遭受偏见),因此通常无法学习非常复杂的功能,因此人们来了。与随机森林分类器有关。随机森林减少了香草决策树的偏差并增加了更多的方差,但不幸的是,在此过程中,它们剥夺了直接的可解释性属性。
但是,仍然有一些工具可以帮助您了解学习的功能和功能的贡献,其中一种工具是treeinterpreter
,您可以在此{{3 }}。