Python 准确预测错误的值

Python 准确预测错误的值,python,machine-learning,scikit-learn,regression,Python,Machine Learning,Scikit Learn,Regression,我是python爱好者和ML noob,我想我应该试着看看我是否能做一些股市预测。我在这方面没有受过任何教育,也不是一个数学爱好者。 然而,我成功地得到了一个非常准确的错误值的预测,并希望一位伟大的ML大师将为我指明正确的方向 首先在我的主数据框(data)中,我计算了布林带、三个DEMAs(12、26、100)和MACD,然后我将我的股票数据的封闭列(带-15英寸)转换为“预测”列,这应该是我想要预测的值,未来15个刻度 然后,我将最后200行拆分成一个单独的数据帧(data1),用于测试我的

我是python爱好者和ML noob,我想我应该试着看看我是否能做一些股市预测。我在这方面没有受过任何教育,也不是一个数学爱好者。 然而,我成功地得到了一个非常准确的错误值的预测,并希望一位伟大的ML大师将为我指明正确的方向

首先在我的主数据框(data)中,我计算了布林带、三个DEMAs(12、26、100)和MACD,然后我将我的股票数据的封闭列(带-15英寸)转换为“预测”列,这应该是我想要预测的值,未来15个刻度

然后,我将最后200行拆分成一个单独的数据帧(data1),用于测试我的模型

事情是这样的

# Create an empty dataframe with only the index of the original
test_data = pd.DataFrame(index=data.index)
# converting in to percentage of Close
test_data['b_upper'] = data['b_upper'] / data['Close']
test_data['b_middle'] = data['b_middle'] / data['Close']
test_data['b_lower'] = data['b_lower'] / data['Close']
test_data['dema1'] = data['dema1'] / data['Close']
test_data['dema2'] = data['dema2'] / data['Close']
test_data['dema3'] = data['dema3'] / data['Close']
# keep MACD
test_data['macd'] = data['macd']
test_data['macdsignal'] = data['macdsignal']
test_data['macdhist'] = data['macdhist']
# convert predict to a percentage of Close
test_data['predict'] = data['predict'] / data['Close']

split = int( len(test_data) * 0.8 )
train, test = test_data[:split], test_data[split:]
Xcols = ['b_upper', 'b_middle', 'b_lower', 'dema1', 'dema2', 'dema3', 'macd', 'macdsignal', 'macdhist']
ycols = ['predict']

train_X = train[Xcols].values
train_y = train[ycols].values.ravel()
test_X = test[Xcols].values
test_y = test[ycols].values.ravel()

data_1 = pd.DataFrame(index=data1.index)

# converting in to percentage of Change
data_1['b_upper'] = data1['b_upper'] / data1['Close']
data_1['b_middle'] = data1['b_middle'] / data1['Close']
data_1['b_lower'] = data1['b_lower'] / data1['Close']
data_1['dema1'] = data1['dema1'] / data1['Close']
data_1['dema2'] = data1['dema2'] / data1['Close']
data_1['dema3'] = data1['dema3'] / data1['Close']
# keep MACD
data_1['macd'] = data1['macd']
data_1['macdsignal'] = data1['macdsignal']
data_1['macdhist'] = data1['macdhist']
# convert predict to a percentage of Close
data_1['predict'] = data1['predict'] / data1['Close']
data_X = data_1[Xcols].values

reg = AdaBoostRegressor( ExtraTreeRegressor(), n_estimators=100, random_state=np.random.RandomState(1) )
reg.fit(train_X, train_y)
p = reg.predict(test_X)

print 'AdaBoostRegressor'
print 'Score:', reg.score(test_X, test_y)
print 'Mean Sq Err:', mean_squared_error(p, test_y)
print 'Obj:', get_size(reg), 'bytes'
返回:

AdaBoostRegressor
Score: -0.064949432102
Mean Sq Err: 0.000173545187532
Obj: 131550 bytes
到目前为止还不错,但当我用它进行预测时,它会非常准确地得到实际收盘价,而不是预测未来15个点的收盘价:

p = reg.predict(data_X)
data1['predicted'] = data1['Close'] * p
data1[['Close','predict', 'predicted']].head(6)
返回:

                    Close   predict predicted
datetime            
2016-05-28 18:15:00 501.00  532.98  501.890391
2016-05-28 18:30:00 501.57  537.34  499.006097
2016-05-28 18:45:00 500.28  532.00  499.654848
2016-05-28 19:00:00 500.28  535.39  499.897474
2016-05-28 19:15:00 501.97  535.23  499.415860
2016-05-28 19:30:00 501.12  531.74  502.4060
绘制此图显示了它是如何预测(红色)实际收盘(浅蓝色)的,我期望它预测“预测”值(绿色): 我尝试过谷歌的所有方法,但最终还是预测了现在,而不是未来。我很确定我错过了一些基本的东西,你的建议会让这个noob更好地理解预测未来需要什么

谢谢,
股票价格总体上是混乱的。随着时间的推移,在某个时间点进行的预测的误差范围将呈指数级增长。您在数据和模型中观察到的正是这种现象。当然,在这个问题上还有其他观点。更多信息请阅读:股票价格普遍混乱。随着时间的推移,在某个时间点进行的预测的误差范围将呈指数级增长。您在数据和模型中观察到的正是这种现象。当然,在这个问题上还有其他观点。更多信息请阅读: