python - 使用 scikit-learn 进行多目标回归

标签 python machine-learning scikit-learn

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

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

其中y_train是一维类似数组的对象

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

在寻找替代方案时,我遇到了多目标回归等概念。据我了解,scikit-learn 中并未实现此类功能。 如何有效解决python中的多目标回归问题?谢谢)

最佳答案

这取决于您解决的问题、您拥有的训练数据以及您选择寻找解决方案的算法。在不了解所有细节的情况下,很难提出任何建议。您可以尝试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它只适合每个目标一个回归器。

关于python - 使用 scikit-learn 进行多目标回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57704609/

相关文章:

python - 决策树可视化期间位置参数遵循关键字参数错误

python - 在 Python 中使用 Selenium 访问 Tor

apache-spark - 来自 RDD 的 PySpark LDA 模型密集向量

Python - 搜索字符串是否在文件中

machine-learning - 如何识别神经网络中神经元和层的数量

python - 高效地将 numpy 数组转换为矩阵

python - Pandas 和 scikit-learn : KeyError: [. ...] 不在索引中

python - Sklearn 预处理 - PolynomialFeatures - 如何保留输出数组/数据帧的列名/标题

python - 使用 Numpy 行和列总和为 1 的随机二进制矩阵

python - 我应该如何对客户端服务器应用程序进行压力测试/负载测试?