Python scikit学习中的多输出分离器和多输出分类器是否也将目标用作输入?
我开始在sci工具包中学习我试图用随机森林估计的多变量目标 在我遇到这个MultiOutputRegressor之前,我确实开始手动实现,并尝试旋转单输出回归器的输出,以便在任何给定的时间使用单个目标-以及其他目标变量作为输入-但它的计算成本越来越高 我已经搜索并查看了一些代码,但是我很难确定目标输出(y)是否用作输入特性(X)。具体而言: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)用作输入特征 当你被预测时,你是不是。。
- 当预测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内置程序使用,尽管只需循环并适应单个模型应该不会太难?为什么会出现这种情况?