我有一个程序。
n = 6
data=pd.read_csv('11.csv',index_col='datetime')
volume = data['TotalVolumeTraded']
close = data['ClosingPx']
logDel = np.log(np.array(data['HighPx'])) - np.log(np.array(data['LowPx']))
logRet_1 = np.array(np.diff(np.log(close)))
logRet_5 = np.log(np.array(close[5:])) - np.log(np.array(close[:-5]))
logVol_5 = np.log(np.array(volume[5:])) - np.log(np.array(volume[:-5]))
logDel = logDel[5:]
logRet_1 = logRet_1[4:]
close = close[5:]
Date = pd.to_datetime(data.index[5:])
A = np.column_stack([logDel,logRet_5,logVol_5])
model = GaussianHMM(n_components= n, covariance_type="full", n_iter=2000).fit([A])
hidden_states = model.predict(A)
我第一次运行代码,“hidden_states”的值如下,
我第二次运行代码,“hidden_states”的值如下,
为什么两个值“hidden_states”不同?
答案 0 :(得分:1)
我不完全确定这里会发生什么,但这里有两个可能的解释,你看到的结果。
GaussianHMM
通过k-means初始化发射参数,这可能会根据数据收敛到不同的值。初始参数被传递给EM算法,该算法也倾向于局部最大值。因此,不同的运行可能导致不同的参数估计和(因此)略有不同的预测。答案 1 :(得分:0)
在定义模型时,通过设置seed
和random_state
来尝试控制随机性。此外,您可以初始化startprob_
和transmat_
并查看其行为。
这样你就可以更好地解释这种行为的原因。