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

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

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

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2120閲覧

AttributeError

MyName1s___

総合スコア3

Keras

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/04/28 02:23

編集2020/04/28 02:25

前提・実現したいこと

ここに質問の内容を詳しく書いてください。

初めまして。
Keras の LSTM で時系列の予測がしたい
上記サイトで公開されているコードを模倣して自分のパソコンでも動かしたいと思っています。
その際表示されているAttributeErrorの解決方法を教えていただきたいです。

発生している問題・エラーメッセージ

エラーメッセージ AttributeError Traceback (most recent call last) <ipython-input-19-5f5796358b25> in <module> 42 43 # データ準備 ---> 44 X_train, y_train = _load_data(data[['close']].iloc[0:900], length_of_sequences ) 45 X_test, y_test = _load_data(data[['close']].iloc[900:1000], length_of_sequences) 46 <ipython-input-19-5f5796358b25> in _load_data(data, n_prev) 13 docX, docY = [], [] 14 for i in range(len(data) - n_prev): ---> 15 docX.append(data.iloc[i:(i+n_prev)].as_matrix()) 16 docY.append(data.iloc[i+n_prev].as_matrix()) 17 alsX = numpy.array(docX) ~\anaconda3\lib\site-packages\pandas\core\generic.py in __getattr__(self, name) 5272 if self._info_axis._can_hold_identifiers_and_holds_name(name): 5273 return self[name] -> 5274 return object.__getattribute__(self, name) 5275 5276 def __setattr__(self, name: str, value) -> None: AttributeError: 'DataFrame' object has no attribute 'as_matrix'

該当のソースコード

ソースコード # -*- coding: utf-8 -*- import numpy import pandas import matplotlib.pyplot as plt from sklearn import preprocessing from keras.models import Sequential from keras.layers.core import Dense, Activation from keras.layers.recurrent import LSTM # 学習用データを抽出する関数 def _load_data(data, n_prev=10): docX, docY = [], [] for i in range(len(data) - n_prev): docX.append(data.iloc[i:(i+n_prev)].as_matrix()) docY.append(data.iloc[i+n_prev].as_matrix()) alsX = numpy.array(docX) alsY = numpy.array(docY) return alsX, alsY if __name__ == "__main__": # 株価データの読み込み data = None for year in range(2007, 2018): data_ = pandas.read_csv('Nikkeiclose.csv') data = data_ if (data is None) else pandas.concat([data, data_]) data.columns = ['date','middle','long','close'] data['date'] = pandas.to_datetime(data['date'], format='%Y-%m-%d') data['close'] = preprocessing.scale(data['close']) data = data.sort_values(by='date') data = data.reset_index(drop=True) data = data.loc[:, ['date', 'close']] data = data[1516:2515] # plt.plot(data['date'], data['close']) # plt.show() # 学習の設定 length_of_sequences = 10 in_out_neurons = 1 hidden_neurons = 300 # データ準備 X_train, y_train = _load_data(data[['close']].iloc[0:900], length_of_sequences ) X_test, y_test = _load_data(data[['close']].iloc[900:1000], length_of_sequences) # ニューラルネットの定義 model = Sequential() model.add(LSTM(hidden_neurons, \ batch_input_shape=(None, length_of_sequences, in_out_neurons), \ return_sequences=False)) model.add(Dense(in_out_neurons)) model.add(Activation("linear")) model.compile(loss="mean_squared_error", optimizer="rmsprop") # 学習 model.fit(X_train, y_train, batch_size=100, nb_epoch=100, validation_split=0.05) # テスト結果表示 predicted = model.predict(X_test) result = pandas.DataFrame(predicted) result.columns = ['predict'] result['actual'] = y_test result.plot() plt.show()

試したこと

AttributeErrorについて調べましたが、何が正しく参照できていないのか分かりません。
['close']が問題かと思いますが、データフレームにはcloseがあります。

15行目は、.as_matrix())を.baluesに変えるとSyntaxError: invalid syntax
が表示される状況です。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

データは、上記サイトと異なり自前のものを使用しており、
横列が左詰めでdate,middle,long,closeで、縦列が時系列データです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

参照しているソースが古いようです。

pandas.DataFrame.as_matrix() は pandas v0.23 (2018/5/15)にて廃止されております。

https://pandas.pydata.org/pandas-docs/version/0.23.0/whatsnew.html#deprecations

DataFrame.as_matrix is deprecated. Use DataFrame.values instead (GH18458).

上記のリンクにあるように、.as_matrix().values に書き換えてみてください。

Python

1def _load_data(data, n_prev=10): 2 docX, docY = [], [] 3 for i in range(len(data) - n_prev): 4 docX.append(data.iloc[i:(i+n_prev)].values) 5 docY.append(data.iloc[i+n_prev].values) 6 alsX = np.array(docX) 7 alsY = np.array(docY) 8 return alsX, alsY

投稿2020/04/28 02:53

編集2020/04/28 02:54
magichan

総合スコア15898

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

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

MyName1s___

2020/04/28 03:19 編集

早速の回答ありがとうございます。 .as_matrix()を.valuesに書き換えたところ、今度は16行目について構文誤りのエラーが出てしまいました。 15行目docXに倣って、16行目をdocY.append(data.iloc[i:(i+n_prev)].valuesへ書き換えましたが、同様に構文誤りのエラーになります。 ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー File "<ipython-input-25-323c848edb0f>", line 16 docY.append(data.iloc[i+n_prev].values ^ SyntaxError: invalid syntax
magichan

2020/04/28 03:11 編集

上記のエラーメッセージを見る限り docY.append() の閉じ括弧が無いようですが、その部分は大丈夫ですか?
MyName1s___

2020/04/28 03:27

magichan様のご指摘の通り、)を見落としておりました! 正常に実行されました。 ありがとうございます。 また何かございましたらよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問