日付エンコーダー

DateEncoder

日付エンコーダは、時刻と日付をエンコードします。 日付エンコーダへの入力は pythonモジュール datetime.datetime のオブジェクトです。

出力はいくつかのサブエンコーディングを連結したもので、それぞれが日付の異なる側面をエンコードします。

そしてそれらのサブエンコーディングは DateEncoderのコンストラクタで指定します。

コンストラクタ

  • season :季節の幅を表現します。デフォルトは1シーズン=91.5日です。

  • dayOfWeek :平日の日数を表現します。デフォルトは1日です。

  • weekend :週末かどうか。0または1のビットで表現します。 (注意)実装では、金曜日の午後6時から日曜日の午前0時まで。

  • holiday :休日かどうか。0または1のビットで表現します。

  • timeOfday :一日の時間を表現します。

これらのコンストラクタを指定したサブエンコーディングをもとに、ひとつのSDRをエンコードします。実際にやってみましょう。

まず季節を4シーズンでコンストラクタを指定し、エンコードしたい日時を指定します。日時はPyhotnモジュールのdatetime.datetime をつかって datetime オブジェクトへ変換します。

python3
import datetime
from htm.encoders.date import DateEncoder

dateEncoder = DateEncoder(season = 4) 

now = datetime.datetime.strptime("2019-05-02 13:08:58", "%Y-%m-%d %H:%M:%S")
nextMonth = datetime.datetime.strptime("2019-06-02 13:08:58", "%Y-%m-%d %H:%M:%S")
xmas = datetime.datetime.strptime("2019-12-25 13:08:58", "%Y-%m-%d %H:%M:%S")

エンコーダーのパラメータの指定ができました。特定の数値をエンコードします。

エンコードされたSDRは以下のようになります。

可視化してみます。

図3-3

Numpy配列に形式を変換してみます。

もう少し細かいコンストラクタを指定してみます。まず平日、週末をサブエンコーダーにより判断します。そして1日あたり6時間ごとに期間を設定します。

各オンビットは意味を持ちますので、もとのデータが近いと似たSDRがエンコードされることに注目してくだい。

最終更新