anaconda3、jupyternotebookで実装
ソースコード
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt import csv from __future__ import print_function from keras.layers.core import Activation from keras.layers.core import Dense from keras.layers.core import Dropout from keras.models import Sequential from keras.utils import np_utils from keras.utils import plot_model from keras.layers.recurrent import LSTM from keras.callbacks import EarlyStopping from keras.initializers import glorot_uniform from keras.initializers import orthogonal from keras.initializers import TruncatedNormal # 学習データ df1 = csv.reader(open('x-data.csv', 'r')) data1 = [ v for v in df1] mat = np.array(data1) mat2 = mat[1:] # 見出し行を外す x_data = mat2[:, 1:].astype(np.float) # 2列目以降を抜き出してfloat変換 print('x_data.shape=', x_data.shape) # ラベルデータ # 1%以上/0%以上/-1%以上/-1%未満 df2 = csv.reader(open('t-data.csv', 'r')) data2 = [ v for v in df2] mat3 = np.array(data2) mat4 = mat3[1:] # 見出し行を外す t_data = mat4[:, 1:].astype(np.float) # 2列目以降を抜き出してfloat変換 print('t_data.shape=', t_data.shape)
##エラー箇所
ここでfloat変換にしよとした所
t_data = mat4[:, 1:].astype(np.float) # 2列目以降を抜き出してfloat変換
IndexError Traceback (most recent call last) <ipython-input-47-b6ba00859e68> in <module> ----> 1 t_data = mat4[:, 1:].astype(np.float)# 2列目以降を抜き出してfloat変換 IndexError: too many indices for array
学習データx-data.csv 、ラベルデータt-data.csvは見出し行、日付列を外して、データを行列に展開。
学習データは(n-2,1)次行列、ラベルデータは(n-2,4)次行列 です。
##x-data.csv(開いたデータの中身)
Date,Data 1965/1/5, 1965/1/6,-0.497284146 1965/1/7,-0.810010493 1965/1/8,-0.949750073 1965/1/12,-0.16388427 1965/1/13,0.534587535 1965/1/14,-0.609059694 1965/1/18,1.391564293 1965/1/19,0.105434899 1965/1/20,0.114992886 1965/1/21,-0.124438336 1965/1/22,0.681599556 1965/1/25,0.964351034 1965/1/26,0.133713051 1965/1/27,-0.810767248 1965/1/28,0.878904551 1965/1/29,0.396063218 1965/2/1,-0.045063459 1965/2/2,0.328819522 1965/2/3,-0.746352469 . . .
##t-data.csv(開いたデータの中身)
Date,1%以上,0%以上,-1%以上,-1%未満 1965/1/5,,,, 1965/1/6,0,0,1,0 1965/1/7,0,0,1,0 1965/1/8,0,0,1,0 1965/1/12,0,0,1,0 1965/1/13,0,1,0,0 1965/1/14,0,0,1,0 1965/1/18,1,0,0,0 1965/1/19,0,1,0,0 1965/1/20,0,1,0,0 1965/1/21,0,0,1,0 1965/1/22,0,1,0,0 1965/1/25,0,1,0,0 1965/1/26,0,1,0,0 1965/1/27,0,0,1,0 1965/1/28,0,1,0,0 1965/1/29,0,1,0,0 1965/2/1,0,0,1,0 1965/2/2,0,1,0,0 1965/2/3,0,0,1,0 1965/2/4,0,0,0,1 1965/2/5,0,0,1,0 1965/2/8,0,1,0,0 1965/2/9,0,1,0,0 1965/2/10,0,1,0,0 . . . . . .
コードと説明がわかりづらいので、どういう意図で書いているのかコメント付けてもらっていいでしょうか? あと、入力データも掲載していただけると回答しやすいです。
shapeを表示してみた所、「mat.shape= (0,)」でした
data2 = [ v for v in df2]をやり直した所
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
<ipython-input-50-7de333948cf8> in <module>
----> 1 data2 = [ v for v in df2]
<ipython-input-50-7de333948cf8> in <listcomp>(.0)
----> 1 data2 = [ v for v in df2]
~/anaconda3/envs/tf14kera_py36/lib/python3.6/codecs.py in decode(self, input, final)
319 # decode input (taking the buffer into account)
320 data = self.buffer + input
--> 321 (result, consumed) = self._buffer_decode(data, self.errors, final)
322 # keep undecoded input until the next call
323 self.buffer = data[consumed:]
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x81 in position 6: invalid start byte
上記のようなエラー文が発生しました。
ばらばらに実行するとわけがわからなくなるので、まとまった処理は1セルの中に書いてまとめて実行するようにしてください。
https://www.atmarkit.co.jp/ait/articles/1712/11/news134.html
この記事を参考にして学習しています。
これは正直参考にしているコードが悪いですね。他を見た方が良いと思います・・・
深層学習による株価予測の研究をしたいと考えていて、初学者ですが実際にコード動かして学習しようと..
コードを動かして学ぶ目的であれば、定評のある書籍を選んでください。ネットの記事にはずいぶんいい加減なものもあります。その記事はコードを見ただけでpythonに不慣れな人が書いているとわかる水準のものです(内包表記無駄だし、データ読み込みなんかはpandasでやった方が良いでしょう。説明も不親切ですし、コードの見た目も我流でやってて読みづらいものです。それでも一応書いてあるとおりにやれば動くみたいではありますが)。
また、初学者が高度なことに挑戦するのは難しいです。ですから、自身の理解が及ぶところからやっていくことをおすすめします。
回答1件
あなたの回答
tips
プレビュー