使用 sci-kit 学习的多类多输出回归

问题描述

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

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

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

对应输出变量y:[1000,400,1000,2000,2500,80,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不适合这类问题?我应该改用神经网络进行调查吗?

解决方法

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