使用scikit-learn (sklearn),如何处理缺失数据进行线性回归



我试过了,但不能让它为我的数据工作:使用Scikit Learn对时间序列pandas数据框架进行线性回归

我的数据包含2个dataframe。DataFrame_1.shape = (40,5000)DataFrame_2.shape = (40,74)。我试图做某种类型的线性回归,但DataFrame_2包含NaN缺失的数据值。当我DataFrame_2.dropna(how="any")的形状下降到(2,74)

是否有任何线性回归算法在sklearn可以处理NaN值?

我在sklearn.datasetsload_boston之后建模,其中X,y = boston.data, boston.target = (506,13),(506,)

下面是我的简化代码:
X = DataFrame_1
for col in DataFrame_2.columns:
    y = DataFrame_2[col]
    model = LinearRegression()
    model.fit(X,y)
#ValueError: Input contains NaN, infinity or a value too large for dtype('float64').

我做了上面的格式来得到形状匹配矩阵

如果发布DataFrame_2会有帮助,请在下面评论,我会添加它。

您可以使用imputation填充y中的空值。在scikit-learn中,使用以下代码片段完成:

from sklearn.preprocessing import Imputer
imputer = Imputer()
y_imputed = imputer.fit_transform(y)

否则,您可能希望使用74列的一个子集作为预测器来构建您的模型,也许您的一些列包含较少的空值?

如果变量是DataFrame,则可以使用fillna。这里我用该列的平均值替换了缺失的数据。

df.fillna(df.mean(), inplace=True)

相关内容

  • 没有找到相关文章

最新更新