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

O.r*_*rka 6 python machine-learning linear-regression pandas scikit-learn

我试过这个但是无法让它对我的数据起作用: 使用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值的线性回归算法?

我是load_bostonsklearn.datasets哪里开始建模的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').
Run Code Online (Sandbox Code Playgroud)

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

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

max*_*moo 5

您可以y使用插补填充空值。在scikit-learn此与下面的代码片段完成:

from sklearn.preprocessing import Imputer
imputer = Imputer()
y_imputed = imputer.fit_transform(y)
Run Code Online (Sandbox Code Playgroud)

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

  • 使用 scikit,您需要调用底层 numpy 数组上的内容,而不是数据帧本身;您应该已经设置了“X=DataFrame_1.values”和“y=Dataframe_2.values” (2认同)
  • Imputer 在 sklearn 0.23.2 中已弃用,请使用 sklearn.impute.SimpleImputer (2认同)