使用 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 中编码 [关闭]