基于scikitlearn的多目标回归

2024-03-29 07:01:51 发布

您现在位置:Python中文网/ 问答频道 /正文

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

        ml_model = GradientBoostingRegressor()
        ml_params = {}
        ml_model.fit(X_train, y_train)

其中y_train是一维数组状对象

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

在寻找替代方案时,我遇到了多目标回归等概念。据我所知,scikit learn中没有实现这种功能。 如何有效地解决python中的多目标回归问题?(谢谢)


Tags: 对象模型功能语言目标modeltrain数组
1条回答
网友
1楼 · 发布于 2024-03-29 07:01:51

这取决于你解决了什么问题,你有训练数据,以及你选择的算法来找到解决方案。不知道所有细节就很难提出任何建议。您可以尝试以random forest作为起点。这是一个非常强大和稳健的算法,在没有太多数据的情况下,它可以抵抗过度拟合,也可以用于多目标回归。下面是一个工作示例:

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)

输出:

Feature vector: (100, 100)
Target vector: (100, 2)
Build and fit a regressor model...
Done. Score 0.4405974071273537

该算法本身支持多目标回归。对于那些没有的,您可以使用multi-output regressor,它只适合每个目标一个回归器。你知道吗

相关问题 更多 >