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

时间:2021-02-22 22:56:26

标签: python machine-learning scikit-learn regression decision-tree

我正在尝试使用 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不适合这类问题?我应该改用神经网络进行调查吗?

1 个答案:

答案 0 :(得分:0)

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