sklearn を使用して株価を予測しようとしています。予測初心者です。ガウスうーんを使用した在庫予測のために、sklearnの例を試しました。しかし、predict は、価格にオーバーレイする状態のシーケンスを提供し、指定された入力終値からポイントも取得します。私の質問は、次の 10 の価格を生成する方法ですか?
1 に答える
常に最後の状態を使用して次の状態を予測するため、終了日を 23 日に変更して、10 日分の入力を追加しましょう。
date2 = datetime.date(2012, 1, 23)
残りのコードを再確認して、予測に将来のデータを実際に使用していないことを確認してください。これらの行の残りは、ファイルの末尾に追加できます。まず、特定の状態で期待されるリターンを調べます。model.means_ 配列には戻り値があります。どちらもこの状態に到達した戻り値であり、必要な将来の戻り値ではありません。将来の収益を得るために、5 つの状態のいずれかに移行する確率と、それらの状態の収益を検討します。model.transmat_ マトリックスから特定の状態に移行する確率を取得します。各状態の戻り値には、model.means_ 値を使用します。内積をとって、特定の状態の期待リターンを取得します。次に、ボリューム データを削除します (必要に応じてそのままにしておくことができます。
expected_returns_and_volumes = np.dot(model.transmat_, model.means_)
returns_and_volumes_columnwise = zip(*expected_returns_and_volumes)
returns = returns_and_volumes_columnwise[0]
返品[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 に設定します。predicted_date の週末は考慮していないことに注意してください。
これは楽しい演習ですが、おそらくこれを本番環境で実行することはないでしょう。まず、時系列は生の価格です。これは実際にはパーセンテージ リターンまたはログ リターンである必要があります。さらに、HMM に 5 つの状態を選択する正当な理由はありません。また、HMM がこの種の問題に適しているという根拠もありません。彼らはおそらくそれを例として選んだだけです。PCA を使用した他の sklearn の例はもっと興味深いと思います。