我可以在scikit-learn(和R)中为DecisionTreeClassifier制作部分图

use*_*752 9 python r scikit-learn

我有一些使用scikit-learn的DecisionTreeClassifier的旧代码.我想根据这个分类器制作部分图.

我到目前为止看到的所有示例(例如http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.partial_dependence.plot_partial_dependence.html)都使用"GradientBoostingRegressor"作为分类器.

我的问题是,是否可以为其他分类器制作部分图?(例如,DecisionTreeClassifier).我试过以下代码:

from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble.partial_dependence import plot_partial_dependence
from sklearn.datasets import make_friedman1

X, y = make_friedman1()
clf = DecisionTreeClassifier(max_features='auto').fit(X,y)
fig, axs = plot_partial_dependence(clf, X, [0, (0, 1)])                                                    
Run Code Online (Sandbox Code Playgroud)

它不起作用.

ValueError: gbrt has to be an instance of BaseGradientBoosting
Run Code Online (Sandbox Code Playgroud)

我在互联网上发现了一些评论(Quora):

部分依赖图根本不依赖于分类器的特定选择.如果您交换随机林分类器,则用于梯度提升示例的部分依赖关系图模块可以正常工作.

但是,我仍然不知道它是如何工作的.

同样对于R,似乎我可以为randomForest包制作部分图.然而,我并不完全确定随机森林是如何实现的,在R手册中,作者Andy Liaw引用了参考文献"Friedman,J.(2001).贪婪函数近似:梯度增强机,Ann.of Stat."

这是否意味着我必须使用梯度增强来获得部分图?

任何帮助表示赞赏.非常感谢!

Teh*_*Guy 2

正如您的错误消息所述,您必须使用基类为 的分类器BaseGradientBoosting

从您发布的文档中:

gbrt:基础梯度提升

拟合梯度提升模型

GradientBoostingClassifierGradientBoostingRegressor继承自BaseGradientBoosting( source ),因此从理论上讲,这些类中的任何一个都应该可以工作。至于其余的分类器,它们似乎不受该plot_partial_dependence函数的支持。