簡體   English   中英

Python-具有nan值的Scipy線性回歸

[英]Python - Scipy linear regression with nan values

我想獲得數據線性回歸的斜率,但是Y包含一些nan值...因此,它擾亂了linregress函數...例如:

from scipy import stats
import numpy as np

X = np.array([0,1,2,3,4,5])
Y = np.array([np.NaN,4, 5, 10, 2, 5])
stats.linregress(X,Y)

但是,我得到了:(nan,nan,nan,nan,nan)因此,我嘗試掩蓋無效值,如您所見:

import numpy.ma as ma
stats.linregress((X),ma.masked_invalid(Y))

但這是一樣的...我不知道我該怎么做...

請嘗試以下操作:

Y=Y[np.logical_not(np.isnan(Y))]
X=X[np.logical_not(np.isnan(Y))]

upd:正如沃倫所注意到的那樣, Y將被更新,所以nans消失了。 您可以將Y[np.logical_not(np.isnan(Y))]X=X[np.logical_not(np.isnan(Y))]直接輸入線性回歸。 或者查看np.isfinite沃倫答案

要刪除y為naninf (x,y)對,可以執行以下操作:

finiteYmask = np.isfinite(Y)
Yclean = Y[finiteYmask]
Xclean = X[finiteYmask]

如果僅將這些“清理過的”數組用於linregress ,則可以執行以下操作:

finiteYmask = np.isfinite(Y)

然后調用linregress(X[finiteYmask], Y[finiteYmask])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM