Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scikit学习中的多输出分离器和多输出分类器是否也将目标用作输入?_Python_Scikit Learn_Regression_Data Science - Fatal编程技术网

Python scikit学习中的多输出分离器和多输出分类器是否也将目标用作输入?

Python scikit学习中的多输出分离器和多输出分类器是否也将目标用作输入?,python,scikit-learn,regression,data-science,Python,Scikit Learn,Regression,Data Science,我开始在sci工具包中学习我试图用随机森林估计的多变量目标 在我遇到这个MultiOutputRegressor之前,我确实开始手动实现,并尝试旋转单输出回归器的输出,以便在任何给定的时间使用单个目标-以及其他目标变量作为输入-但它的计算成本越来越高 我已经搜索并查看了一些代码,但是我很难确定目标输出(y)是否用作输入特性(X)。具体而言: 当预测y_1时,y_2是否。。。是否用作输入功能 当y_x被预测时,y_1是不是。。。是否将y_n(不包括y_x)用作输入特征 当你被预测时,你是不是。。

我开始在sci工具包中学习我试图用随机森林估计的多变量目标

在我遇到这个MultiOutputRegressor之前,我确实开始手动实现,并尝试旋转单输出回归器的输出,以便在任何给定的时间使用单个目标-以及其他目标变量作为输入-但它的计算成本越来越高

我已经搜索并查看了一些代码,但是我很难确定目标输出(y)是否用作输入特性(X)。具体而言:

  • 当预测y_1时,y_2是否。。。是否用作输入功能
  • 当y_x被预测时,y_1是不是。。。是否将y_n(不包括y_x)用作输入特征
  • 当你被预测时,你是不是。。。y_n-1用作输入特征? (如果我说得太详细,请道歉)
“论文”解释了我希望实现的目标


一些答案暗示了一个事实,即MultiOutputRegressor算法可能会查找目标值之间的相关性,但我希望它们实际上会被旋转为我的应用程序中算法的输入(或有效输入)。

查看源代码函数,在,它似乎将响应分开,并分别进行拟合。另外,因为它可以接受很多回归器/分类器。。我无法想象将输出之间的这种关系估计为包含这么多模型

如果您正在寻找考虑响应变量之间关系的东西,您可以查看以下内容

下面是一个使用线性回归的示例,以表明在多次或迭代单个输出下,系数是相似的:

from sklearn.multioutput import MultiOutputRegressor
from sklearn.linear_model import LinearRegression

np.random.seed(111)

mean = [0, 2]
cov = [[1, 0.3], [0.3, 3]]  

y = np.random.multivariate_normal(mean, cov, 100)
X = np.random.normal(0,1,(100,2))

regr_multi = MultiOutputRegressor(LinearRegression())
regr_multi.fit(X, y)

regr_list = [LinearRegression().fit(X,y[:,i]) for i in range(y.shape[1])]

print(regr_multi.estimators_[0].coef_ , regr_list[0].coef_)

[-0.04355358 -0.03379101] [-0.04355358 -0.03379101]

print(regr_multi.estimators_[1].coef_ , regr_list[1].coef_)

[ 0.2921806 -0.1372799] [ 0.2921806 -0.1372799]

如果我理解正确的话,你在文章中描述的方法似乎与你链接文章中的方法都不一样

本文中的第一种方法,堆叠单目标,可能可以通过
StackingRegressionor
实现,尽管这需要一些修改,以便基础模型只向前传递其指定输出的预测

本文中的第二种方法,回归器链的集成,对于类来说应该非常简单,使用
cv
set,然后在多个
顺序
s上集成


您所描述的方法似乎无法作为sklearn内置程序使用,尽管只需循环并适应单个模型应该不会太难?

为什么会出现这种情况?