问题描述
我编写了一个 Python 代码,可以使用统计数据、机器学习和深度学习模型进行预测。不过,如果您指出我的以下想法在预测股票未来价格时出了什么问题,我将不胜感激。
- 下载历史数据。
- 添加技术指标作为功能。
- 通过将“调整后的收盘价”价格向后移动要预测的天数(例如“days_to_predict”)来创建目标列,从而在空单元格中获得 NaN。
- 删除“成交量”、“调整收盘价”、“收盘价”、“低价”、“开盘价”和“高价”列。
- 将与 NaN 对应的特征数组中的最后“days_to_predict”行复制到另一个名为“X_forecast”的变量中。
- 从特征中删除这些行以及目标列中的 NaN。
- 将特征和目标数组拆分为训练集和测试集。
- 进行特征/训练集缩放。
- 使用训练集训练模型。
- 使用测试集测试模型的性能。
- 使用模型预测 X_forcast。
虽然我为此付出了很多努力,但我并没有得到准确的结果。我的问题是:我是否抓住了错误的 X_forecast?请告诉我我的算法出了什么问题,或者更好的是,是否有另一种我不知道的获取 X_forecast 的方法?
以下是前一天的示例代码:
import pandas_datareader as web
import numpy as np
from datetime import datetime,date,timedelta
start_date = '01/01/2004'
end_date = date.today()
ticker = 'TSLA'
data_source = 'yahoo'
days_into_the_future = 1
test_size = 0.25
df = web.DataReader(ticker,data_source,start_date,end_date)
data = {}
data['df'] = df.copy()
data['df']['target'] = data['df']['Adj Close'].shift(-days_into_the_future)
data['df'] = data['df'].drop(['Volume','Adj Close','Close'],1)
data['X_forecast'] = data['df'].iloc[-days_into_the_future:,:-1]
data['df'] = data['df'].dropna()
data['feature'] = data['df'].drop(['target'],1)
data['target'] = data['df'].iloc[:,-1]
X = np.array(data['feature'])
y = np.array(data['target'])
timefeatures = data['feature'].index
# split the dataset into training & testing sets by date
train_samples = int((1 - test_size) * len(X))
data["X_train"] = X[:train_samples]
data["y_train"] = y[:train_samples]
data["X_test"] = X[train_samples:]
data["y_test"] = y[train_samples:]
data["dates_train"] = timefeatures[:train_samples] # Extract the dates of train and test set dates
data["dates_test"] = timefeatures[train_samples:]
from sklearn.linear_model import LinearRegression
model = LinearRegression()
history = model.fit(data['X_train'],data['y_train'])
predictionlineReg = history.predict(data['X_test']) # Linear regression
predictionlineRegfuture = history.predict(data['X_forecast'])[0] # For tomorrow's prediction
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)