首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多目标回归的学习方法

多目标回归的学习方法
EN

Stack Overflow用户
提问于 2019-08-29 06:53:38
回答 2查看 3.4K关注 0票数 0

我正在使用python语言和scikit学习库来解决经典的回归问题。很简单:

代码语言:javascript
复制
        ml_model = GradientBoostingRegressor()
        ml_params = {}
        ml_model.fit(X_train, y_train)

其中y_train是一维数组类对象。

现在,我想扩展任务的功能,以获得一组目标值,而不是单个目标值。培训集的样本X_train将保持不变。这个问题的一个直观的解决方案是训练几个模型,其中所有模型的X_train都是相同的,但是每个模型的y_train将是特定的。这绝对是一种有效的解决方案,但在我看来,这是一种效率低下的解决方案。

在寻找替代方案时,我遇到了诸如多目标回归这样的概念.据我所知,这种功能不是在scikit中实现的--学习。如何有效地解决python中的多目标回归问题?谢谢)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-29 07:50:44

这取决于您解决的问题、培训您拥有的数据,以及您选择寻找解决方案的算法。在不知道所有细节的情况下,很难提出任何建议。您可以尝试一个随机林作为起点。这是一个非常强大和稳健的算法,在你没有太多数据的情况下,它可以抵抗过度拟合,并且可以用于多目标回归。下面是一个有用的例子:

代码语言:javascript
复制
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor


X, y = make_regression(n_targets=2)
print('Feature vector:', X.shape)
print('Target vector:', y.shape)

X_train, X_test, y_train, y_test = train_test_split(X, y, train_size=0.8)

print('Build and fit a regressor model...')

model = RandomForestRegressor()
model.fit(X_train, y_train)
score = model.score(X_test, y_test)

print('Done. Score', score)

输出:

代码语言:javascript
复制
Feature vector: (100, 100)
Target vector: (100, 2)
Build and fit a regressor model...
Done. Score 0.4405974071273537

该算法支持多目标回归。对于那些不需要的,您可以使用多输出回归器,它只适合每个目标的一个回归者。

票数 4
EN

Stack Overflow用户

发布于 2021-08-08 14:55:04

随机森林方法的另一个替代方法是使用适合多目标回归问题的支持向量回归的调整版本。与MultiOutputRegressor相匹配的方法的优点是,该方法考虑了多个目标之间的潜在相关性,因此应该表现得更好。具有纸张参考的工作实现可以找到这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57704609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档