【发布时间】:2020-07-02 06:14:38
【问题描述】:
正如post中提到的,调整后的R2分数可以通过以下等式计算,其中n是样本数,p是模型的参数数。
adj_r2 = 1-(1-R2)*(n-1)/(n-p-1)
根据这个另一个post,我们可以用model.coef_得到我们模型的参数个数。
但是,对于 Gradient Boosting (GBM),我们似乎无法获得模型中的参数数量:
from sklearn.ensemble import GradientBoostingRegressor
import numpy as np
X = np.random.randn(100,10)
y = np.random.randn(100,1)
model = GradientBoostingRegressor()
model.fit(X,y)
model.coef_
output >>>
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-3-4650e3f7c16c> in <module>
----> 1 model.coef_
AttributeError: 'GradientBoostingRegressor' object has no attribute 'coef_'
检查documentation 后,GBM 似乎由不同的估计器组成。估计器的数量是否等于参数的数量?
不过,我无法获得每个单独估算器的参数数量
model.estimators_[0][0].coef_
output >>>
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-2-27216ebb4944> in <module>
----> 1 model.estimators_[0][0].coef_
AttributeError: 'DecisionTreeRegressor' object has no attribute 'coef_'
如何计算 GBM 的调整后 R2 分数?
【问题讨论】:
-
回答没有帮助?
-
我仍在阅读有关解释模型的信息,因为您提到 R2 分数只能用于评估解释模型。我们可以在 sklearn 中找到任何解释模型吗?我猜线性回归、SVM、梯度提升不是解释模型。
-
线性回归 - 这就是 R2 概念最初被开发和使用的地方。再次重申,不要将最近对可交互 ML 模型的讨论与我对解释性 统计 模型的讨论混为一谈。我要说的是,R2 实际上根本没有在 ML 中使用……
-
但无论如何,答案可以说已经解决了您潜在的 coding 问题,这个问题实际上是关于这个问题的。我本可以停在那里而不是提供额外的建议(实际上并没有被要求)。
-
好的。最后一个问题,除了线性回归,你能再举一个解释模型吗?再看一个解释模型的例子,也许我会更明白。
标签: python machine-learning scikit-learn non-linear-regression ensemble-learning