我们可以在python中的决策树回归下进行多元回归吗?
Posted
技术标签:
【中文标题】我们可以在python中的决策树回归下进行多元回归吗?【英文标题】:can we do multivariate regression under decision tree regression in python? 【发布时间】:2019-07-21 06:12:01 【问题描述】:我正在 python 中进行决策树回归。然而,对应于测试样本的预测目标值是该叶中目标变量的平均值。有没有一种方法,我们可以在那个桶中运行多元回归来获得测试样本的目标变量的估计值,而不是仅仅获得一个平均值?
P.S.:想知道 python 中的类似功能:https://www.researchgate.net/publication/2640479_Employing_Linear_Regression_in_Regression_Tree_Leaves
【问题讨论】:
我正在处理的数据在每片叶子中都有很高的可变性。因此,为了获得更好的预测,我试图在每棵树中定义一个多元回归。这将大大提高我的可预测性,而不是仅使用叶子的平均值作为预测 你在使用特定的库吗? 我正在使用 sklearn.tree 的 DecisionTreeRegressor 【参考方案1】:有没有一种方法,我们可以在那个桶中运行多元回归来获得测试样本的目标变量的估计值,而不是仅仅获得一个平均值?
也许你应该使用sklearn.model_selection.cross_validate
函数进行交叉验证,它可以给你一些分数:
>>> from sklearn import datasets, linear_model
>>> from sklearn.model_selection import cross_validate
>>> from sklearn.metrics.scorer import make_scorer
>>> from sklearn.metrics import confusion_matrix
>>> from sklearn.svm import LinearSVC
>>> diabetes = datasets.load_diabetes()
>>> X = diabetes.data[:150]
>>> y = diabetes.target[:150]
>>> lasso = linear_model.Lasso()
>>> scores = cross_validate(lasso, X, y, cv=3,
... scoring=('r2', 'neg_mean_squared_error'),
... return_train_score=True)
>>> print(scores['test_neg_mean_squared_error'])
[-3635.5... -3573.3... -6114.7...]
>>> print(scores['train_r2'])
[0.28010158 0.39088426 0.22784852]
【讨论】:
嗯.. 事情是,我更担心预测。我想在叶子中使用回归来在决策树中提供更好的预测,而不是从该存储桶中获取平均值作为对落入该存储桶的所有测试用例的预测。以上是关于我们可以在python中的决策树回归下进行多元回归吗?的主要内容,如果未能解决你的问题,请参考以下文章
Python分类模型实战(KNN逻辑回归决策树SVM)调优调参,评估模型——综合项目