<技術メモ>printデバッグからの卒業
概要
pythonのデバッガの使い方
最近知り合ってよく一緒にプログラミングをする人に、VBAや統合開発環境でいうところの「ブレークポイント」とかが使えることを教えてもらいました。
Python3.6 / Ubuntu16.04LTS
python3 -m pdb XXX.py
すると、コマンドが出てくる。
コマンドの種類 b <行数> : 指定した行数にブレークポイントを置く c : ブレークポイントまでプログラム実行 s : 1行すすめる(次の行が関数だった場合、関数に入って1行目) n : 1行すすめる(次の行が関数だった場合、関数に入ってreturnされるまで)
便利だと思ったこと ブレークポイントをおいたところまでプログラムを実行し、「変数の確認」「その場でテスト」できる。
使い方
a_str = "123" b_int = 12 c = a_str + b_int print(c)
5行目まで進めて…
バグったところはその場でテスト
(String型とint型を足し算しているから、int型に型変換して足し算したらちゃんとできた)
→プログラムを修正して、再度走らせる
みたいな感じで、結構重宝しています。
株分析プログラムの進捗
株分析プログラムの進捗
- プログラムは完成した。
株データ取得→編集→読み込み→RNN(GRU)に学習させる→結果を予想する、というプログラムの流れは完成しました。
テスト的に少量の株データを読ませると、ちゃんと学習して結果を予想しました。(データが少ないため学習結果はひどいものですが…。) - 全データ(4000銘柄×3年分)だとフリーズ
昨日の晩に処理を走らせてそのまま寝ました。
起きたらデータ読み込みの途中でフリーズしてました。。 windowsでいうタスクマネージャー的なものを開いてメモリの使用量を見ていたのですが、pythonだけでメモリを7.1GB使用していたようです。
pandas.DataFrameに30万行×100行の二次元配列を入れようとしているのですが、そこが原因なのかもしれません。
プログラムがどのようにメモリを使うのかちゃんと分かっていないので、これを機に勉強してみます。
目標と課題(日本株投資×DeepLearning)
目標
- 深層学習(DeepLearning)を用いて、日本株の株価予想を行う
課題
- データの取得元
- 株価
- k-db http://k-db.com/stocks/ からCSVをスクレイピング (日足)
- 会社情報(総資産、売上等…)
- 決算プロ http://ke.kabupro.jp/doc/down40.htm から取得。 ※ アドレスをいじれば、過去5年分は拾えた
- 株価
- データ分析方法の勉強
- 「ゼロから作るDeepLearning」
紹介されていたニューラルネットワーク(NN)、畳込みニューラルネットワーク(CNN)は それぞれのデータが互いに独立していることが前提。投資には使えなさそう。 - 「詳解 ディープラーニング TensorFlow・Kerasによる時系列データ処理」
ニューラルネットワークの応用であるリカレントニューラルネットワーク(RNN)やそれをさらに改善したLSTM、GRUというものが使えそう。 →GRUでやってみる
- 「ゼロから作るDeepLearning」
- 訓練データとテストデータの分け方
- 株価予測できたとして、実際どう運用するのか??
文字コード変換
ダウンロードしてきたCSVファイル(Shift-JIS)をUTF-8に変換する
バージョン : python3.6
import codecs def sjis_to_utf8(input_path, output_path): ''' SJIS -> UTF-8 にコード変換。 input_path : コード変換するファイルのパス output_path : コード変換したファイルを生成するパス ''' input = codecs.open(input_path, "r", "shift_jis") output = codecs.open(output_path, "w", "utf-8") for line in input: output.write(line) input.close() output.close()