伙计们,所以我有这3年的数据,从2012年到2014年,但是2014年的数据缺失(100行),我真的不太确定如何处理它,这是我的尝试:
X = red2012Mob.values
y = red2014Mob.values
X = X.reshape(-1,1)
y = y.reshape(-1,1)
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)
y_pred = regressor.predict(X_test)
我不会更改2014年以来缺少任何值的数据,我只是直接将其输入模型中
答案 0 :(得分:3)
有两种方法:
red2012Mob.dropna()
,或者如果是时间序列,则忽略完整的丢失数据块,例如,从2014年下半年开始)。在实践中,我通常结合使用方法。例如,在某种程度上,我将尝试第二点的策略,但是如果数据太差,通常最好使“好”数据少于许多估算数据。
答案 1 :(得分:1)
我不知道您是否拥有2013年的数据。如果可用,我的第一个建议就是也使用它。就训练数据而言,您只应使用不丢失值的2014年数据,然后使用这些值拟合模型。一旦在模型上获得了不错的交叉验证准确性,就可以获取2014年缺失值的数据子集,并用其来预测2014年的值。
为了更好地理解,这是一小段示例代码,用于为列表/列的非nan值提供子集:
将numpy导入为np
a1 = [如果不是np.isnan(v),则为v中的v]