我试过了,但不能让它为我的数据工作:使用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.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
会有帮助,请在下面评论,我会添加它。
您可以使用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)