Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以在scikit learn(和R)中为DecisionTreeClassifier绘制部分图吗_Python_R_Scikit Learn - Fatal编程技术网

Python 我可以在scikit learn(和R)中为DecisionTreeClassifier绘制部分图吗

Python 我可以在scikit learn(和R)中为DecisionTreeClassifier绘制部分图吗,python,r,scikit-learn,Python,R,Scikit Learn,我有一些使用scikit learn的DecisionTreeClassifier的旧代码。我想基于这个分类器绘制部分图 到目前为止,我看到的所有示例(例如)都使用“GradientBoostingRegressionor”作为分类器 我的问题是,是否可以为其他分类器绘制部分图?(例如DecisionTreeClassifier)。我尝试了以下代码: from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble.par

我有一些使用scikit learn的DecisionTreeClassifier的旧代码。我想基于这个分类器绘制部分图

到目前为止,我看到的所有示例(例如)都使用“GradientBoostingRegressionor”作为分类器

我的问题是,是否可以为其他分类器绘制部分图?(例如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)])                                                    
但它不起作用

ValueError: gbrt has to be an instance of BaseGradientBoosting
我在网上找到了一些评论(Quora):

部分依赖图完全不依赖于分类器的特定选择。如果在随机林分类器中进行交换,用于梯度增强示例的部分依赖图模块将可以正常工作

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

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

这是否意味着我必须使用梯度推进才能得到部分图


感谢您的帮助。非常感谢

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

从您发布的文档中:

gbrt:BaseGradientBoosting

一个拟合的梯度推进模型


GradientBoostingClassifier
GradientBoostingRegressionor
都继承自
BaseGradientBoosting
(),因此理论上,这两个类中的任何一个都应该工作。至于其余的分类器,它们似乎不受
plot\u partial\u dependence
函数的支持。

partial dependence plot是一种在特定模型中发现特征与目标特征交互的方法。在线性回归模型中,可以将其视为系数(β),在非线性模型中只能使用部分相关性,并告诉您模型如何在每个不同的特征值下解释特征。另一个区别是,在大多数非线性模型中,特征交互将发挥更大的作用。scikit learn不支持gbrt以外的模型的部分依赖图,这并不意味着您不能将该方法应用于该模型。(这有点悲哀,我等待他们的更新已经很久了)

下面是一个在Python中应用部分依赖于Xgb模型的示例。

这篇文章也说明了它是如何计算的。因此,您可以使用此逻辑创建自己的函数


此外,R库具有随机森林模型的部分依赖图(我有一段时间没有使用R,无法记住库的确切名称)。

这已经困扰了我一段时间-PDP仅在gbrt分类器上可用

幸运的是,这个问题已经得到解决,一个新的sklearn版本(3周前左右)意味着可以在所有分类器上进行PDP


此处描述了所做的工作(仅供参考,我与此无关,只是一位心存感激的最终用户)

请使用来自sklearn.inspection导入绘图\u partial\u dependence而不是sklearn.employe.partial\u dependence.partial\u dependence