Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/326.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 多维目标回归_Python_Scikit Learn - Fatal编程技术网

Python 多维目标回归

Python 多维目标回归,python,scikit-learn,Python,Scikit Learn,我正在使用scikit学习回归,我的问题如下。我需要对几个参数(向量)进行回归。这适用于一些回归方法,如集成.ExtraTreesRegressor和集成.RandomForestRegressor。事实上,我们可以给出一个向量向量作为目标来拟合上述两种回归方法的模型(fit(X,y)method) 但是,当我尝试使用集成.gradientBoostingRegressionor、集成.AdaBoostRegressor和线性模型.SGDRegressor时,分类器无法拟合模型,因为它期望一维值

我正在使用scikit学习回归,我的问题如下。我需要对几个参数(向量)进行回归。这适用于一些回归方法,如
集成.ExtraTreesRegressor
集成.RandomForestRegressor
。事实上,我们可以给出一个向量向量作为目标来拟合上述两种回归方法的模型(
fit(X,y)
method)

但是,当我尝试使用
集成.gradientBoostingRegressionor
集成.AdaBoostRegressor
线性模型.SGDRegressor
时,分类器无法拟合模型,因为它期望一维值作为目标(
拟合(X,y)
方法的y参数)。这意味着,使用这些回归方法,我一次只能估计一个参数。这不适合我的问题,因为可能需要一些时间,而我需要估计大约20个参数。另一方面,我真的很想测试这些方法

所以,我的问题是:有没有人知道是否有一种解决方案可以一次拟合模型,并估计
集成、梯度增强回归器
、集成、AdaBoostRegressor
线性模型.sgdrgressor


我希望我已经足够清楚了

我认为你所拥有的是一个问题

并非scikit learn中的每种回归方法都能处理此类问题,您应该查阅每种方法的文档以找到答案。特别是,目前既不支持也不支持这一点:
fit(X,y)
指定X:array-like,shape=[n_-samples,n_-features]和y:array-like,shape=[n_-samples]

但是,您可以在scikit学习中使用其他方法。例如,线性模型:

from sklearn import linear_model
# multivariate input
X = [[0., 0.], [1., 1.], [2., 2.], [3., 3.]]
# univariate output
Y = [0., 1., 2., 3.]
# multivariate output
Z = [[0., 1.], [1., 2.], [2., 3.], [3., 4.]]

# ordinary least squares
clf = linear_model.LinearRegression()
# univariate
clf.fit(X, Y)
clf.predict ([[1, 0.]])
# multivariate
clf.fit(X, Z)
clf.predict ([[1, 0.]])

# Ridge
clf = linear_model.BayesianRidge()
# univariate
clf.fit(X, Y)
clf.predict ([[1, 0.]])
# multivariate
clf.fit(X, Z)
clf.predict ([[1, 0.]])

# Lasso
clf = linear_model.Lasso()
# univariate
clf.fit(X, Y)
clf.predict ([[1, 0.]])
# multivariate
clf.fit(X, Z)
clf.predict ([[1, 0.]])

如前所述,只有一些模型支持多变量输出。如果您想使用其中一个,您可以使用一个新类对多元输出的回归器进行并行化:

您可以这样使用它:

from sklearn.datasets import load_linnerud
from sklearn.ensemble import GradientBoostingRegressor
from sklearn.multioutput import MultiOutputRegressor

linnerud = load_linnerud()

X = linnerud.data
Y = linnerud.target

# to set number of jobs to the number of cores, use n_jobs=-1
MultiOutputRegressor(GradientBoostingRegressor(), n_jobs=-1).fit(X, Y)

您确定Ridge示例运行良好吗?我认为它无法实现多目标预测。