0

我的名为 ds_f 的数据集是一个 840x57 矩阵,其中包含 NaN 值。我想用线性回归模型预测一个变量,但是当我尝试拟合模型时,我收到这条消息“SVD 没有收敛”:

X = ds_f[ds_f.columns[:-1]]
y = ds_f['target_o_tempm']
model = sm.OLS(y,X) #stackmodel
f = model.fit() #ERROR

因此,我一直在寻找将掩码应用于 DataFrame 的答案。虽然我正在考虑创建一个掩码来“忽略”NaN 值,然后将其转换为 DataFrame,但我得到了与 ds_f 相同的 DataFrame,没有任何变化:

m = ma.masked_array(ds_f, np.isnan(ds_f))
m_ds_f = pd.DataFrame(m,columns=ds_f.columns)

编辑:我已经通过编写 model=sm.OLS(X,y,missing='drop') 解决了这个问题,但是当我显示结果时出现了一个新问题,我只得到 NaN:

结果显示

4

1 回答 1

2

你在用statsmodels吗?如果是这样,您可以指定, 以在估计之前sm.OLS(y, X, missing='drop')删除这些值。NaN

或者,您可能需要考虑对缺失值进行插值,而不是删除它们。

于 2016-03-13T14:53:37.257 回答