我正在尝试将机器学习应用于股票预测,并且遇到了关于未来看不见的(更高的)股票收盘价的缩放问题。
假设我用随机的forrest回归来预测股票价格。我把数据分解成火车组和测试组。对于火车组,我使用标准标量,然后进行拟合和变换,然后使用回归器来拟合测试集,我使用标准标量,然后进行转换,然后使用回归器进行预测,并与测试标签进行比较。
如果我在图表上绘制预测并测试标签,预测似乎会达到最大值或上限。问题是标准定标器适合于火车组,测试集(在时间线的后面)有更高的值,算法不知道如何处理这些极端数据。
def test(X, y):
# split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, shuffle=False)
# preprocess the data
pipeline = Pipeline([
('std_scaler', StandardScaler()),
])
# model = LinearRegression()
model = RandomForestRegressor(n_estimators=20, random_state=0)
# preprocessing fit transform on train data
X_train = pipeline.fit_transform(X_train)
# fit model on train data with train label
model.fit(X_train, y_train)
# transform on test data
X_test = pipeline.transform(X_test)
# predict on test data
y_pred = model.predict(X_test)
# print(np.sqrt(mean_squared_error(y_test, y_pred)))
d = {'actual': y_test, 'predict': y_pred}
plot_data = pd.DataFrame.from_dict(d)
sns.lineplot(data=plot_data)
plt.show()如何处理缩放?
这就是我的预测,实际接近价格与时间的关系。

发布于 2019-07-01 17:32:18
问题主要来自你所使用的模型。RandomForest回归器是在决策树上创建的。它正在学习将输入映射到训练集中的每个示例的输出。因此,RandomForest回归器将对中间值起作用,但是对于它在训练过程中没有看到的极值,它的表现当然会显示出您的图片。您想要的是直接学习一个函数,使用线性/多项式回归或更高级的算法,如ARIMA。
https://stackoverflow.com/questions/56836089
复制相似问题