【发布时间】:2017-06-23 23:29:05
【问题描述】:
我有一个数据框,它总是在周五晚上 9 点到周一凌晨 0 点之间丢失信息。我正在使用这些数据通过线性回归算法进行预测,所以这个 jump 会提高我的预测:
date timestamp liters next_liters
...
3442 2017-02-03 19:00:00 1486148400 0.86261 0.86354
3443 2017-02-03 20:00:00 1486152000 0.86354 0.86356
3444 2017-02-03 21:00:00 1486155600 0.86356 1.86330
3445 2017-02-06 00:00:00 1486339200 1.86330 1.86305
3446 2017-02-06 01:00:00 1486342800 1.86305 1.86321
3447 2017-02-06 02:00:00 1486346400 1.86321 1.86352
3448 2017-02-06 03:00:00 1486350000 1.86352 1.86311
3449 2017-02-06 04:00:00 1486353600 1.86311 1.86271
...
我想知道如何处理这个问题,以便在算法处理数据时不考虑周五到周一。
我虽然将这些值转换为 NaN,但如您所知,sklearn 不允许此类信息。
这是我当前的代码:
df = df[['date', 'epoch', 'liters']]
df['next_liters'] = df['liters'].shift(-1)
df.dropna(inplace=True)
X = np.array(df.drop(['next_liters'], 1))
X = preprocessing.scale(X)
y = np.array(df['next_liters'])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33)
clf = LinearRegression(fit_intercept=True, n_jobs=-1)
clf.fit(X_train, y_train)
print ("LinearRegression (" + str(clf.score(X_test, y_test)) + ")")
print (clf.predict(X_test))
【问题讨论】:
-
如果在最后一个值和第一个值之间投影一条线,看看结果是什么样的。这是一种适用于许多机器学习系统的技术。如果它没有接近(你可以期待的最好的),请尝试调整线条的比例,甚至尝试曲线。
标签: python pandas machine-learning scikit-learn linear-regression