2014-10-18 5 views
5

sklearn은 회귀 추정을 위해 LASSO 방법을 제공합니다. 그러나, 나는 LassoCV (X, y)를 y 행렬에 맞추려고 할 때 오류를 던집니다. 아래 스크린 샷과 해당 문서의 링크를 참조하십시오. 내가 사용하는 sklearn 버전은 0.15.2입니다.sklearn, LassoCV() 및 ElasticCV()가 고장 났습니까?

y : array-like, shape (n_samples,) or (n_samples, n_targets) 

난 그냥 올가미가() 같은 X와 Y에 맞게 사용, 그것은 잘 작동 :

http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LassoCV.html#sklearn.linear_model.LassoCV

그 문서는 Y는 ndarray이 될 수 있다고 말한다. 그래서 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]: 

ElasticCV()과 탄성() 쌍은 같은 상황을 가지고 있다는 것, 전자는() 멀티 태스크-ElasticCV() 및 2D 매트릭스 잘 후자의 작품을 사용하는 것이 좋습니다.

+0

이 보이는 여러 대상을 예측합니다. –

+0

@DV, 멀티 태스킹은 각 작업 간의 독립성을 전제로하며 전체 Y 전체를 처리하고 테스트를 적용하는 것과는 다를 수 있습니다. 또한 LassoCV()는 교차 유효성 검사를 통해 Lasso()의 랩 어라운드 여야합니다. 이것이 내가 도서관이 고장 났다고 생각하는 이유입니다. –

답변

2

일부 docstrings에 기록 된 것과는 달리, 사용중인 것과 같은 일반적인 올가미 평가 도구는 여러 대상을 지원하지 않습니다.

오류 메시지는 모든 대상에 대해 동일한 스파 스 지원을 강제하는 그룹 올가미 형식 인 MultiTaskLasso을 사용하라는 메시지입니다. 이것이 필요한 것이라면 계속해서 사용하십시오. 그렇지 않다면 이제는 대상을 따라 루프하는 것보다 다른 유용한 방법이 없습니다. sklearn.externals.joblib을 사용하여 당황스럽게 병렬 처리 할 수 ​​있습니다.

(당신이 독립적 인 대상에 대해 다중 대상 지원에 기여 기분 경우, GitHub의에 끌어 오기 요청이 아주 많이. 환영 할 것) 문서가 잘못 당신은 당신이 경우 MultiTaskLassoCV를 사용하기로되어있는 것처럼

관련 문제