0

プログラムがあります。

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」の値は次のようになります。

ここに画像の説明を入力

コードを 2 回目に実行すると、"hidden_​​states" の値は次のようになります。 ここに画像の説明を入力

2 つの値「hidden_​​states」が異なるのはなぜですか?

4

2 に答える 2

1

ここで何が起こるかは完全にはわかりませんが、表示されている結果について考えられる 2 つの説明を次に示します。

  1. モデルは、状態ラベルの順序を維持しません。したがって、ある実行で 1 とラベル付けされた状態は、別の実行で 4 になる可能性があります。これは、潜在変数モデルにおけるラベル切り替え問題として知られています。
  2. GaussianHMMデータに応じて異なる値に収束する可能性のある k-means を介して放出パラメーターを初期化します。初期パラメータは、極大値になりやすい EM アルゴリズムに渡されます。したがって、実行が異なれば、パラメーター推定値も異なり、(結果として) 予測もわずかに異なる可能性があります。
于 2016-10-10T21:58:40.613 に答える