Scikit learn 如何用gaussianhm-sklearn进行预测

Scikit learn 如何用gaussianhm-sklearn进行预测,scikit-learn,prediction,hidden-markov-models,Scikit Learn,Prediction,Hidden Markov Models,我试图用sklearn预测股票价格。我对预测一无所知。我尝试了sklearn的例子,用高斯hmm进行股票预测。但是预测给出了叠加在价格上的状态序列,它还从给定的输入接近价格中获取点。我的问题是如何生成下一个10个价格?您将始终使用最后一个状态来预测下一个状态,因此让我们通过将结束日期更改为23号来添加10天的输入: date2 = datetime.date(2012, 1, 23) 您可以仔细检查代码的其余部分,以确保我没有实际使用未来数据进行预测。这些行的其余部分可以添加到文件的底部。首先

我试图用sklearn预测股票价格。我对预测一无所知。我尝试了sklearn的例子,用高斯hmm进行股票预测。但是预测给出了叠加在价格上的状态序列,它还从给定的输入接近价格中获取点。我的问题是如何生成下一个10个价格?

您将始终使用最后一个状态来预测下一个状态,因此让我们通过将结束日期更改为23号来添加10天的输入:

date2 = datetime.date(2012, 1, 23)
您可以仔细检查代码的其余部分,以确保我没有实际使用未来数据进行预测。这些行的其余部分可以添加到文件的底部。首先,我们想知道给定状态的预期回报是多少。model.means uu数组有返回,这两个返回都是使我们达到这种状态的返回,而不是您想要的未来返回。为了得到未来收益,我们考虑到5个状态中的任何一个的概率,以及这些状态的返回值。我们从model.transmat uu矩阵中得到进入任何特定状态的概率,对于每个状态的返回,我们使用model.means u值。我们使用点积来获得特定状态的预期回报。然后我们删除了批量数据(如果您愿意,您可以将其保留,但您似乎对未来的价格最感兴趣)

如果您打印返回值[0],您将看到状态0的预期回报,状态1的返回值[1]等。现在,给定一天和一个状态,我们希望预测明天的价格。你说的是10天,所以让我们用它来表示lastN

predicted_prices = []
lastN = 10
for idx in xrange(lastN):
    state = hidden_states[-lastN+idx]
    current_price = quotes[-lastN+idx][2]
    current_date = datetime.date.fromordinal(dates[-lastN+idx])
    predicted_date = current_date + datetime.timedelta(days=1)
    predicted_prices.append((predicted_date, current_price + returns[state]))

print(predicted_prices)
如果您在“生产”中运行此操作,则将date2设置为您拥有的最后一个日期,然后lastN将为1。请注意,我没有将预测的_日期考虑到周末


这是一个有趣的练习,但您可能不会在生产中运行它,因此引用。首先,时间序列是原始价格;这实际上应该是百分比返回或日志返回。另外,没有理由为HMM选择5个状态,或者一个HMM甚至可以解决这类问题,我对此表示怀疑。他们可能只是举了个例子。我认为另一个使用PCA的sklearn示例更有趣。

您将始终使用最后一个状态来预测下一个状态,因此让我们通过将结束日期更改为23号来添加10天的输入:

date2 = datetime.date(2012, 1, 23)
您可以仔细检查代码的其余部分,以确保我没有实际使用未来数据进行预测。这些行的其余部分可以添加到文件的底部。首先,我们想知道给定状态的预期回报是多少。model.means uu数组有返回,这两个返回都是使我们达到这种状态的返回,而不是您想要的未来返回。为了得到未来收益,我们考虑到5个状态中的任何一个的概率,以及这些状态的返回值。我们从model.transmat uu矩阵中得到进入任何特定状态的概率,对于每个状态的返回,我们使用model.means u值。我们使用点积来获得特定状态的预期回报。然后我们删除了批量数据(如果您愿意,您可以将其保留,但您似乎对未来的价格最感兴趣)

如果您打印返回值[0],您将看到状态0的预期回报,状态1的返回值[1]等。现在,给定一天和一个状态,我们希望预测明天的价格。你说的是10天,所以让我们用它来表示lastN

predicted_prices = []
lastN = 10
for idx in xrange(lastN):
    state = hidden_states[-lastN+idx]
    current_price = quotes[-lastN+idx][2]
    current_date = datetime.date.fromordinal(dates[-lastN+idx])
    predicted_date = current_date + datetime.timedelta(days=1)
    predicted_prices.append((predicted_date, current_price + returns[state]))

print(predicted_prices)
如果您在“生产”中运行此操作,则将date2设置为您拥有的最后一个日期,然后lastN将为1。请注意,我没有将预测的_日期考虑到周末


这是一个有趣的练习,但您可能不会在生产中运行它,因此引用。首先,时间序列是原始价格;这实际上应该是百分比返回或日志返回。另外,没有理由为HMM选择5个状态,或者一个HMM甚至可以解决这类问题,我对此表示怀疑。他们可能只是举了个例子。我认为另一个使用PCA的sklearn示例更有趣。

你能与完整示例分享一个要点吗?predictme在sklearn网站上就一些示例代码问了一个非常具体的问题。我只是看了一下以获取源代码,看起来他们已经把这个例子记下来了。你能和完整的例子分享一下要点吗?predictme问了一个关于sklearn网站上一些示例代码的非常具体的问题。我只是查看了一下,以获取源代码,看起来他们已经把这个示例取下来了。