Python sklearn,LassoCV()和ElasticCV()断裂?

Python sklearn,LassoCV()和ElasticCV()断裂?,python,scikit-learn,regression,linear-regression,Python,Scikit Learn,Regression,Linear Regression,sklearn为回归估计提供了LASSO方法。然而,当我尝试用矩阵y拟合LassoCV(X,y)时,它抛出了一个错误。请参见下面的屏幕截图,以及他们文档的链接。我使用的sklearn版本是0.15.2 它的文件说y可以是一个数组: y : array-like, shape (n_samples,) or (n_samples, n_targets) 当我使用Lasso()来拟合相同的X和y时,效果很好。所以我想知道LassoCV()是坏了还是我需要做点别的 In [2]: import

sklearn为回归估计提供了LASSO方法。然而,当我尝试用矩阵y拟合LassoCV(X,y)时,它抛出了一个错误。请参见下面的屏幕截图,以及他们文档的链接。我使用的sklearn版本是0.15.2

它的文件说y可以是一个数组:

y : array-like, shape (n_samples,) or (n_samples, n_targets)
当我使用Lasso()来拟合相同的X和y时,效果很好。所以我想知道LassoCV()是坏了还是我需要做点别的

In [2]:  import numpy as np 
im
In [3]: import sklearn.linear_model

In [4]: from sklearn import linear_model

In [5]: X = np.random.random((10,100))

In [6]: y = np.random.random((50, 100)) 

In [7]: linear_model.Lasso().fit(X,y) 
Out[7]: 
Lasso(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=1000,
   normalize=False, positive=False, precompute='auto', tol=0.0001,
   warm_start=False)

In [8]: linear_model.LassoCV().fit(X,y)
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-8-9c8ad3459ac8> in <module>()
----> 1 linear_model.LassoCV().fit(X,y)

/chimerahomes/wenhoujx/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/sklearn/linear_model/coordinate_descent.pyc in fit(self, X, y)
   1006             if y.ndim > 1:
   1007                 raise ValueError("For multi-task outputs, use "
-> 1008                                  "MultiTask%sCV" % (model_str))
   1009         else:
   1010             if sparse.isspmatrix(X):

ValueError: For multi-task outputs, use MultiTaskLassoCV

In [9]: 
[2]中的
:将numpy作为np导入
感应电动机
在[3]中:导入sklearn.linear\u模型
[4]中:从sklearn导入线性_模型
[5]中:X=np.random.random((10100))
在[6]中:y=np.random.random((50100))
[7]中:线性_模型.Lasso().fit(X,y)
出[7]:
套索(alpha=1.0,copy\u X=True,fit\u intercept=True,max\u iter=1000,
标准化=假,正=假,预计算=自动,tol=0.0001,
预热(启动=错误)
[8]中:线性_模型.LassoCV().fit(X,y)
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
---->1线性_模型.LassoCV().拟合(X,y)
/chimerahomes/wenhoujx/enthught/Canopy_64bit/User/lib/python2.7/site-packages/sklearn/linear_model/coordinate_dence.pyc in fit(self,X,y)
1006如果y.ndim>1:
1007提升值错误(“对于多任务输出,使用”
->1008“多任务%sCV”%(型号)
1009其他:
1010如果稀疏。isspmatrix(X):
ValueError:对于多任务输出,请使用MultiTaskLassoCV
在[9]中:


似乎ElasticCV()和Elastic()对的情况相同,前者()建议使用多任务-ElasticCV(),后者适用于2d矩阵

与某些文档字符串中所写的相反,正常的lasso估值器(如您正在使用的估值器)不支持多个目标

错误消息告诉您使用
多任务套索
,这是一种组套索,强制对每个目标提供相同的稀疏支持。如果这是你所需要的,那就去用它吧。如果没有,到目前为止,除了在目标之间循环之外,没有其他有用的方法,您可以使用
sklearn.externals.joblib
尴尬地并行化这些目标


(如果您想为独立目标提供多目标支持,则非常欢迎github上的pull请求。)

看起来文档是错误的,如果您预测多个目标,您应该使用MultiTaskLassoCV。@DV,multitask假设每个任务之间是独立的,这可能不同于将整个Y视为一个整体并应用测试。另外,LassoCV()应该是带有交叉验证的Lasso()的环绕。这就是为什么我认为图书馆坏了。