使用 scikit 学习的多类多输出回归

Posted

技术标签:

【中文标题】使用 scikit 学习的多类多输出回归【英文标题】:multi-class multi-output regression using sci-kit learn 【发布时间】:2021-05-25 05:21:53 【问题描述】:

我正在尝试使用 sci-kit learn 开发一个机器学习程序,该程序可以从 5 个输入中预测 9 个输出,但遇到了问题。

为了训练目的,我已经获得了 5 个输入的 20,000 个实例以及相应的 9 个输出。输入代表放大器的性能测量。输出表示提供这些性能测量的组件大小。

所以一行输入变量 X 可能是:[ 8430, 6895, 12735, 208929613, 249]

对应输出变量y:[1000, 400, 1000, 2000, 2500, 1000, 80, 1000, 2000]

在导入所有相关库并将输入分配给 X 并将输出分配给 y 后,我尝试按如下方式创建模型:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
X_train = X_train.values
X_test = X_test.values
y_train = y_train.values
y_test= y_test.values

model = DecisionTreeRegressor()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
accuracy = accuracy_score(y_test, predictions)

然而,运行此代码后,我收到以下错误:

ValueError: multiclass-multioutput is not supported

但是阅读 SKlearn 网站说决策树本质上是多类的?我应该如何着手修复这个错误?还是SKlearn不适合这种问题?我应该改用神经网络进行调查吗?

【问题讨论】:

具体在哪里?请使用完整的错误跟踪更新您的问题。另外,请以编程方式发布您的y 示例;确实支持多输出回归,请参阅Multi-output Decision Tree Regression。 【参考方案1】:

决策树是多类的,这意味着它们可以处理不同样本属于多个类的数据,而不是每个样本属于不同的类。您仍然可以实现自己的决策树,并通过选择特征来适应您的问题,同时相对于不同类的平均信息增益构建您的树,这样就可以解决问题。您还可以更简单地为每个不同的标签使用一个基本但不同的决策树,同时每个样本只传递一个标签到每棵树。您还可以通过许多其他方式调整决策树以适应您的问题,或者使用更自然但如果数据结构良好但可能不太有效的 NN。

【讨论】:

以上是关于使用 scikit 学习的多类多输出回归的主要内容,如果未能解决你的问题,请参考以下文章

具有分类和连续属性的多类多输出分类,无需在 python 中编码 [关闭]

如何使用 lstm 执行多类多输出分类

SciKit Learn 中的多类逻辑回归

在 scikit learn 的多类逻辑回归中,哪些系数属于哪个类?

错误:分类指标无法处理多类多输出和多标签指标目标的混合

scikit-learn 中的多输出高斯过程回归