2015-11-02 70 views
2

我是一個初學者,我試圖從scipy使用迴歸。我發現了錯誤:ValueError:太多的值來解壓Scipy

ValueError異常:值過多解壓

當我運行下面的代碼:

testArray1 = [1,2,3] 
testArray2 = [2,3,4] 
slope, intercept, r_value, std_err = scipy.stats.linregress(testArray1,testArray2) 
+2

你錯過了'p_value'在你回來的元組:http://docs.scipy.org/doc/scipy-0.16.0/reference/generated/scipy.stats.linregress.html – tzaman

+2

@tzaman釘它。右側有五個值,但左側只有四個值。錯誤信息會告訴您這種差異 - 但實際上,您第一次遇到它時會感到困惑。 – Prune

回答

3

尋找的答案,同樣的錯誤讓我在這裏,只是在我的情況下,我正在使用一些更復雜的輸入(掩碼陣列,詳見前面)。我在這裏發佈我的解決方案,以防有人可能需要它。

蒙面陣列SciPy: Masked arrays)的情況下,SciPy的有一組指定爲他們的統計功能:scipy.stats.mstats

from scipy import stats  

x = [array([4.04]), array([4.38])] 
y = [array([3.60]), array([4.03])] 

slope, intercept, r_value, std_err = scipy.stats.linregress(x,y) 

Traceback (most recent call last): 
    File "code.py", line 4, in <module> 
    slope, intercept, r, prob, sterrest = stats.linregress(x,y) 
    File ".../anaconda/lib/python3.4/site-packages/scipy/stats/_stats_mstats_common.py", line 79, in linregress 
    ssxm, ssxym, ssyxm, ssym = np.cov(x, y, bias=1).flat 
ValueError: too many values to unpack (expected 4) 

但是用stats.mstats.linregress()將修復它:

例如,一對陣列的列表將產生相同的錯誤時由scipy.stats.linregress稱爲

from scipy import stats  

x = [array([4.04]), array([4.38])] 
y = [array([3.60]), array([4.03])] 

slope, intercept, r_value, std_err = scipy.stats.mstats.linregress(x,y)   
print(r**2) 

>>> 1.0 
相關問題