2016-03-30 13 views
6

interpolasyon aralığının altında olan ben aşağı 1E4 için 1E5 gelen max_n_alphas azalırsa bu alamadım hata daha fazla.ValueError: x_new bir değer Bu ben</p> <pre><code>my_estimator = LassoLarsCV(fit_intercept=False, normalize=False, positive=True, max_n_alphas=1e5) </code></pre> <p>Not yaparken olsun bir scikit-öğrenme hatadır

Neler olup bittiği hakkında bir fikri olan var mı? I 40 boyutta 40k veri noktalarına sahip bir

my_estimator.fit(x, y) 

çağrı zaman

hata gerçekleşir.

tam yığın izleme verilerinize belirli bir şey olmalı bu

File "/usr/lib64/python2.7/site-packages/sklearn/linear_model/least_angle.py", line 1113, in fit 
    axis=0)(all_alphas) 
    File "/usr/lib64/python2.7/site-packages/scipy/interpolate/polyint.py", line 79, in __call__ 
    y = self._evaluate(x) 
    File "/usr/lib64/python2.7/site-packages/scipy/interpolate/interpolate.py", line 498, in _evaluate 
    out_of_bounds = self._check_bounds(x_new) 
    File "/usr/lib64/python2.7/site-packages/scipy/interpolate/interpolate.py", line 525, in _check_bounds 
    raise ValueError("A value in x_new is below the interpolation " 
ValueError: A value in x_new is below the interpolation range. 
+3

'sklearn.linear_model 'den LassoLarsCV' yi çalıştırdıktan sonra kod satırınızı çalıştırıyorum ve hata alıyorum. Lütfen tam geri bildirim mesajının yanı sıra aldığınız hatayı yeniden üretmek için yeterli kod sağlayın. –

+1

Bu satırda hata oluşmuyor, ancak .fit() öğesini çağırdığımda. Ne yazık ki, burada çoğaltmak zor, veri kümemde 40k puan var. –

+1

Scipy'deki interpolatörler genellikle 'x' değerlerinin monoton olarak artmasını gerektirir. 'X' veri kümeniz için monoton olarak artıyor mu? Değilse, veri kümesini 'x' ile anahtar olarak sıralamayı deneyin ve tekrar deneyin. İşe yarıyorsa, bana bildirin ve ben lütuf için uygun bir cevap ekleyeceğim :) –

cevap

4

benziyor. LassoLarsCV() oldukça uslu verilerin bu sentetik örnekle düzgün çalışıyor gibi görünüyor:

Bu sklearn 0.16 olduğunu
import numpy 
import sklearn.linear_model 

# create 40000 x 40 sample data from linear model with a bit of noise 
npoints = 40000 
ndims = 40 
numpy.random.seed(1) 
X = numpy.random.random((npoints, ndims)) 
w = numpy.random.random(ndims) 
y = X.dot(w) + numpy.random.random(npoints) * 0.1 

clf = sklearn.linear_model.LassoLarsCV(fit_intercept=False, normalize=False, max_n_alphas=1e6) 
clf.fit(X, y) 

# coefficients are almost exactly recovered, this prints 0.00377 
print max(abs(clf.coef_ - w)) 

# alphas actually used are 41 or ndims+1 
print clf.alphas_.shape 

, ben positive=True seçeneği yok.

Zaten neden çok büyük bir max_n_alpha kullanmak isteyeceğinizden emin değilim. 1e + 4'ün neden çalıştığını ve 1e + 5'in sizin durumunuzda olmadığını bilmeme rağmen, max_n_alphas = ndims + 1 ve max_n_alphas = 1e + 4'ten aldığınız yolları veya iyi davranan veriler için aynı olan her şeyden şüpheleniyorum. Ayrıca, clf.alpha_'da çapraz doğrulama ile tahmin edilen optimal alfa aynı olacaktır. Alfa'nın yapmaya çalıştığı örnek için Lasso path using LARS örneğini inceleyin. LassoLars documentation

alphas_ array, shape (n_alphas + 1,)

Maximum of covariances (in absolute value) at each iteration. n_alphas is either max_iter, n_features, or the number of nodes in the path with correlation greater than alpha, whichever is smaller.

den da

, bu yüzden yukarıda boyut ndims + 1 (yani n_features + 1) alphas_ ile sona mantıklıdır.

P.S. Sklearn 0.17.1 ve pozitif = True ile test edilmiş, ayrıca bazı pozitif ve negatif katsayılar ile de test edilmiştir, aynı sonuç: alphas_ ndims + 1 veya daha azdır.

+0

Verilerle ilgisi yok. Aynı veri kümesinde, yukarıda belirtildiği gibi n_afaları azaltırken sorun ortadan kalkar. Hata, alfabe oluştururken sorun setiyle uğraşırken değil, gerçekleşir. –

+0

@BaronYugovich Aynı boyutlardaki farklı veri kümeleriyle, büyük bir max_n_alfalarla, herhangi bir sorun bulunmadığını görüyorsunuz. Sorunun neden veriyle ilgili olmadığını düşünüyorsunuz? Lütfen sorununuzu yeniden üreten eksiksiz bir örnek gönderin. Teşekkürler :) –

+0

Anlamlıdır. Merakla, rastgele verilerle deneyinizle, ortogonal eşleştirme peşinde http://stackoverflow.com/questions/36287045/orthogonal-matching-pursuit-regression-am-i-using-it-wrong ? noredirect = 1 # comment60438035_36287045 –