質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

Q&A

解決済

1回答

1657閲覧

LSTMによる将来値の予測

k.brook

総合スコア15

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

深層学習

深層学習は、多数のレイヤのニューラルネットワークによる機械学習手法。人工知能研究の一つでディープラーニングとも呼ばれています。コンピューター自体がデータの潜在的な特徴を汲み取り、効率的で的確な判断を実現することができます。

0グッド

1クリップ

投稿2019/08/30 03:35

https://qiita.com/tizuo/items/b9af70e8cdc7fb69397f

上記のコードを参考に,LSTMによる将来予測を実施したいと思っています.

Python

1def create_dataset(dataset, look_back=1): 2 dataX, dataY = [], [] 3 for i in range(len(dataset)-look_back-1): 4 xset = [] 5 for j in range(dataset.shape[1]): 6 a = dataset[i:(i+look_back), j] 7 xset.append(a) 8 dataY.append(dataset[i + look_back, 0]) 9 dataX.append(xset) 10 return numpy.array(dataX), numpy.array(dataY) 11 12look_back = 12 13trainX, trainY = create_dataset(train, look_back) 14testX, testY = create_dataset(test, look_back)

8行目のdataY.append(dataset[i + look_back, 0])をdataY.append(dataset[i + look_back+1, 0])に
変更した場合は問題なく実行できましたが,dataY.append(dataset[i + look_back+2, 0])とした際に,
index 79 is out of bounds for axis 0 with size 79 というエラーメッセージが表示されました.

『look_back+2』はtまでのデータを用いてt+2まで予測を実施するという意味かと考えていましたが,これ自体の理解が間違っているのでしょうか.
また,このエラーを解決するための修正点について教えていただけますでしょうか.

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

LSTM はわからないのですが、エラー内容について。

index 79 is out of bounds for axis 0 with size 79

インデックス79(つまり、i + look_back +2が79)は、軸0サイズ79に対して範囲を超えています。

79個のデータを用意して、0番からインデックスを振ります。よって、0~78番のデータができます。そこに、「79番のデータにアクセスしろ」と命じたので、「79番目はありません」というエラーです。

+1 ならよかったのは、3行目のlen(dataset)-look_back-1の「-1」でしょう。

プログラムというのは、Python や C/C++ といった「プログラミング言語」で書かれたもののことではありません。現に、「運動会のプログラム」は、日本語で書かれていたはずです。プログラムは、何かの目標を達成するために、しなければならないことを、必要な順番に並べたものです。プログラムを変更するには、つまり「将来予測」の「将来を延ばす」ためには、何をするべきかを知らなければなりません。
それぞれの変数が何を表しているのか。それぞれの行で何の計算を行っているのか。そういうことを知って下さい。
つまり、単純には3行目を-2にすれば、+2でも実行はできます。しかし、それが望む結果を得るために必要なことかどうかは、また別の話です。

投稿2019/09/01 12:20

Q71

総合スコア995

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問