【发布时间】:2020-04-09 15:25:15
【问题描述】:
我目前正在研究时间序列模型。这很简单。我正在部署最后一行 OHLC(开、高、低、收)值并试图预测下一个收盘价。简单而无用。但我想做的是给最后 10 天的时间来预测明天的价格。我知道这不会是准确的,但这是我正在尝试做的。
我如何获得 NextClose 并将其应用于线性回归模型:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
df = pd.read_csv("./EURUSD.csv")
days = 1
df['NextClose'] = df['Close'].shift(-days)
df = df.dropna()
total = len(df)
test_ratio = 0.30
test_size = int(total * test_ratio)
total = len(df)
test_ratio = 0.30
test_size = int(total * test_ratio)
X = df[['Open', 'High', 'Low', 'Close']]
y = df[['NextClose']]
#build test and train data
X_train = X[:-test_size]
y_train = y[:-test_size]
X_test = X[-test_size:]
y_test = y[-test_size:]
# build model
lr = LinearRegression()
lr.fit(X_train, y_train)
y_pred = lr.predict(X_test)
plt.scatter(y_pred, y_test)
plt.show()
在这种情况下,我只给出最后一行。我想要做的是提供最后 10-20 行。
【问题讨论】:
-
我不确定您的 DataFrame 是什么样子,但据我了解,您正在尝试仅在过去 10 天(CSV 的行)内预测下一次收盘,对吗?不知道“只给出最后一行”是什么意思。给出最后一行来测试它?
-
我想给出最后 10 行并预测下一个收盘价。在当前回归中,我们只给出 1 行而不是 10
标签: python pandas scikit-learn linear-regression