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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

17605閲覧

pandasとnumpyの切り替えがうまくいきません

chain

総合スコア11

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/02/11 19:53

前提・実現したいこと

https://qiita.com/tsunaki/items/a5f3f975a31dc45fc9c9
を参考に株価予想をしようとしています。

http://k-db.com/
のサービスが終了しているので、自分で作成したcsvデータを読み込んでいるのですが、サンプルコード通りにpandasで読み込んでas_matrixを使ってnumpyに切り替えているつもりなのですが、エラーが出ます。

データのロードのところくらいしか変更していないのですが、なぜエラーになるのでしょうか。また、どのように修正したらよいのでしょうか。

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

AttributeError: 'numpy.float64' object has no attribute 'as_matrix'

該当のソースコード

全部載せると長いのですが一応全部載せます。

python

1# -*- coding: utf-8 -*- 2 3import numpy 4import pandas 5import matplotlib.pyplot as plt 6 7from sklearn import preprocessing 8from keras.models import Sequential 9from keras.layers.core import Dense, Activation 10from keras.layers.recurrent import LSTM 11 12class Prediction : 13 14 def __init__(self): 15 self.length_of_sequences = 10 16 self.in_out_neurons = 1 17 self.hidden_neurons = 300 18 19 def load_data(self, data, n_prev=10): 20 X, Y = [], [] 21 for i in range(len(data) - n_prev): 22 X.append(data.iloc[i:(i+n_prev)].as_matrix()) 23 Y.append(data.iloc[i+n_prev].as_matrix()) 24 retX = numpy.array(X) 25 retY = numpy.array(Y) 26 return retX, retY 27 28 def create_model(self) : 29 model = Sequential() 30 model.add(LSTM(self.hidden_neurons, \ 31 batch_input_shape=(None, self.length_of_sequences, self.in_out_neurons), \ 32 return_sequences=False)) 33 model.add(Dense(self.in_out_neurons)) 34 model.add(Activation("linear")) 35 model.compile(loss="mape", optimizer="adam") 36 return model 37 38 def train(self, X_train, y_train) : 39 model = self.create_model() 40 # 学習 41 model.fit(X_train, y_train, batch_size=10, epochs=100) 42 return model 43 44batch_xs=pandas.read_csv('batch_xs.csv',header=None) 45test_xs=pandas.read_csv('test_xs.csv',header=None) 46 47x_train, y_train = prediction.load_data(batch_xs.iloc[:,0], prediction.length_of_sequences) 48x_test, y_test = prediction.load_data(test_xs.iloc[:,0], prediction.length_of_sequences) 49 50 51if __name__ == "__main__": 52 53 prediction = Prediction() 54 model = prediction.train(x_train, y_train) 55 56 predicted = model.predict(x_test) 57 result = pandas.DataFrame(predicted) 58 result.columns = ['predict'] 59 result['actual'] = y_test 60 result.plot() 61 plt.show() 62

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

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

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

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

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

guest

回答1

0

ベストアンサー

ぱっとエラーコードを見たところ

AttributeError: 'numpy.float64' object has no attribute 'as_matrix'

と書いてあり、なにかのオブジェクトにas_matrixがないことが分かります
おそらくprediction.load_data()内のdata.iloc[i:(i+n_prev)]かdata.iloc[i+n_prev]に単なる数字が入っているのではないでしょうか?

as_matrixはDataFrameをarrayに変換する関数だったと思うのでどちらもDataFrameでないと正しく動きません
cvsのデータ構造が分からないためこれ以上何も言えませんが参考にしてみてください

投稿2018/02/13 04:51

giit

総合スコア91

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

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

chain

2018/02/13 10:50

なるほど、そういうことですか。次元を変更したらうまくいきました。ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問