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

2024-05-20 02:03:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我试过这个,但没能让它为我的数据工作: Use Scikit Learn to do linear regression on a time series pandas data frame

我的数据由两个数据帧组成。DataFrame_1.shape = (40,5000)DataFrame_2.shape = (40,74)。我试图做一些线性回归,但是DataFrame_2包含NaN缺少的数据值。当我DataFrame_2.dropna(how="any")时,形状会下降到(2,74)

sklearn中是否有能够处理NaN值的线性回归算法?

我是在sklearn.datasets中的load_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会有帮助,请在下面发表评论,我将添加它。


Tags: 数据dataframefordatamodeluse线性col
2条回答

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

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

您可以用插补来填写y中的空值。在scikit-learn中,使用以下代码段完成此操作:

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

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

相关问题 更多 >