python - 多输出回归

标签 python machine-learning scikit-learn regression

过去几周我一直在研究多输出回归。我正在使用 scikit 学习包。我的机器学习问题有 3 个特征的输入,需要预测两个输出变量。 sklearn 包中的一些 ML 模型原生支持多输出回归。如果模型不支持,可以使用sklearn多输出回归算法进行转换。 multioutput类适合每个目标一个回归器。

  1. 多输出回归类或支持的多输出回归算法是否考虑了输入变量的潜在关系?
  2. 我应该使用神经网络而不是多输出回归算法吗?

最佳答案

1) 对于您的第一个问题,我将其分为两部分。

  • 第一部分的答案写在您链接的文档中,也写在这个 user guide topic 中。 ,其中明确指出:

    As MultiOutputRegressor fits one regressor per target it can not take advantage of correlations between targets.

  • 第一个问题的第二部分询问支持此的其他算法。为此,您可以查看 "inherently multiclass"用户指南中的一部分。本质上多类意味着他们不使用一对一或一对一策略来处理多类(OvO 和 OvR 使用多个模型来适应多个类,因此可能不使用之间的关系目标)。本质上多类意味着他们可以将多类设置构建到一个模型中。这列出了以下内容:

    sklearn.naive_bayes.BernoulliNB
    sklearn.tree.DecisionTreeClassifier
    sklearn.tree.ExtraTreeClassifier
    sklearn.ensemble.ExtraTreesClassifier
    sklearn.naive_bayes.GaussianNB
    sklearn.neighbors.KNeighborsClassifier
    sklearn.semi_supervised.LabelPropagation
    sklearn.semi_supervised.LabelSpreading
    sklearn.discriminant_analysis.LinearDiscriminantAnalysis
    sklearn.svm.LinearSVC (setting multi_class=”crammer_singer”)
    sklearn.linear_model.LogisticRegression (setting multi_class=”multinomial”)
    ...
    ...
    ...
    

    尝试用“Regressor”替换末尾的“Classifier”并查看那里的fit() 方法的文档。例如,我们以 DecisionTreeRegressor.fit() 为例:

    y : array-like, shape = [n_samples] or [n_samples, n_outputs]
    
        The target values (real numbers). 
        Use dtype=np.float64 and order='C' for maximum efficiency.
    

    您会看到它支持目标的二维数组 (y)。因此它可能能够使用目标的相关性和潜在关系。

2) 现在关于你是否使用神经网络的第二个问题,这取决于个人喜好、问题类型、你拥有的数据量和类型、你想要进行的训练迭代。或许您可以尝试多种算法并选择能够为您的数据和问题提供最佳输出的算法。

关于python - 多输出回归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49391637/

相关文章:

python - 为什么 savefig 和 plot 命令必须位于 IPython 笔记本的同一个单元格中?

python - 使用 subprocess.call() 将参数传递给 FFMPEG

Python正则表达式在字符串的开头和结尾提取子字符串

Azure 机器学习 - 推荐 Web 服务

tensorflow - 向 gcloud 提交训练作业时出错

python - GridSearchCV 和 LogisticRegression 引发 ValueError : Can't handle mix of continuous and binary

python - Pandas 数据帧 : how can i compare values in two columns of a row are equal to the ones in the same columns of a subsequent row?

r - 插入符号 : RFE with variable tuneGrid

python - 如何在 scikit 学习管道中实现 RandomUnderSampler?

machine-learning - scikit OneClassSvm 稀疏矩阵返回与密集矩阵(非常)不同的结果