トップ 最新 追記

kaztomo日記


2017/10/01 [長年日記]

_ [Python]Jupyter notebook で新しく身につけた

ヘルプ表示で出てくるキー表示は大文字だけど、実際に大文字でタイプしても効かない。実は小文字 (>_<)

これは常識なんだろうか (-_-;;


2017/10/02 [長年日記]

_ 時系列データを扱うことについての今日の学び

  • 時間情報、対象(目的変数)は絶対必要。他に説明変数を付け加えることで精度が向上できる。
  • モデルを生成するためには、「今から予測地点」までの期間Aを過去に遡って見たときに、”期間A”より前のデータを使う必要あり。これは、モデルに使ってよい時系列データ期間という意味であり、期間Aよりも後の時系列データを使うと、「未来を知ったデータで予測」することになりNG
  • 時系列データを扱う場合の交差検定(CV)の考え方
T:学習用データ
V:検定用データ

時系列でない場合は
TTTTV
TTTVT
TTVTT
TVTTT
VTTTT

時系列データならばこうする
    TTTTV
   TTTTV
  TTTTV
 TTTTV
TTTTV
  • モデルの良しあしは、「検定用データ」がどれだけうまく説明できるか。モデル高めるために、説明できていない変数を見直す。
  • 周期性パターンを把握する。パターン変動がある場合、説明変数にパターンを説明する特徴量を加えて考えてみる。(1日のうちに特定の変動がある、特定の月、など)
  • 長期のデータを用意する(パターンが複数回発生するトレーニングデータ)。
  • 原因が説明変数として入っていない変数は手動で排除・修正など前処理する。起きる頻度が非常に少ない事柄について、手動で目的変数の影響を処理しておく。(普段は変化がないのに、急激に変化してすぐ戻る場合)

特に最後のあたりは、先日「データよりアイデアを重んじる」と学んだことに近い考えだと思う。


2017/10/13 [長年日記]

_ 今日の学び

勉強目的で「ある場所」へ出かけて話を聞いてみたが、一番期待していた話題について、 俺の知識レベルが低いのだろうか、コレ!という学びが得られなかった。

ローソク足を生で喰わせて、そこから汎化結果が得られるとも思えなかったが、 それでも僅かながらも利益率が得られるということは、どんな変化を特徴量として判断したんだろうか (?_?)

次に続く話題は、まったく興味がなかったので右から左へスルー ┐(´д`)┌

最後の話題は少し興味があり聞き入ってしまった。ARcore を勉強してみたくなった (^O^)/



2017/10/16 [長年日記]

_ [Python]友人から貰ったデータが謎

こんな感じのデータを貰った。TSV と JSONの混合体 (+_+)。 pandas に入れたいけど、どう解釈(プログラミング)していいかさっぱり orz

AAA  BBB  CCC  {key1:{key2:VVV,key3:[1,2,3,4] } }
※スペースのあるところには、実際には Tab になっている。

実際はもっと複雑な階層構造になっていて、配列も長さがまちまち (>_<)

さて、around google のたびに出るか orz

ちなみにこんな DataFrame にしたい。

col1col2col3col4col5col6col7col8
key1 <-マルチカラム化
key2key3 <-マルチカラム化
AAABBBCCCVVV1234

2017/10/17 [長年日記]

_ [Python]調べてみたら nested dictionary というのか

昨日のような JSONが階層構造になっている形式は nested dictionary って言うみたいだ。

pandas 的には MultiIndex っぽいんだけど、色々とググってはみたものの 簡単には pandas DataFrame にできそうにない (+_+)

需要はあると思うから、何らかの手段でできるんじゃないかと想像するけど、俺の力不足 (>_<)


参考にさせていただいたサイト:


2017/10/19 [長年日記]

_ [Python]nested dictionary を展開するのは json_normalize で

色々とググってみたら、nested dictionary を展開するのは json_normalize を使うみたいだ。

もともと入手していたデータは、こんな形式

AAA  BBB  CCC  {key1:{key2:VVV,key3:[1,2,3,4]}}
※スペースのあるところには、実際には Tab になっている。

普通に pandas に取り込んでも 4つのカラムに取り込まれるので、 4番目のカラムに対して json_normalize してみた。

from pandas.io.json import json_normalize

dict = '{key1:{key2:VVV,key3:[1,2,3,4]}}'
json_normalize(dict)

出力結果

key1.key2   key1.key3
VVV         [1,2,3,4]

key を連結していけば対象カラムにアクセスできるので、階層構造を理解した後だとすんなり指定できる(^o^)/

もともと期待していた結果は、"key1.key3" もカラムに展開してもらいたかったけど、 よくよく考えてみると この数値列は後で比較したり演算したりする可能性があるので、 一塊になっていたほうが便利なんじゃないのか、と思い直した。\(^o^)/

後は pandas の連結方法だな


参考にさせていただいたサイト:


2017/10/20 [長年日記]

_ [Python]nested dictionary の Array を読み込むのは大変 (+_+)

ネストされた辞書型の要素を json_normalize で取得できることは解ったけど、 それが複数行の配列になっている状態から DataFrame化したい。

配列(Series) を json_normalize で処理させようとするとエラー (>_<) 入力として受け付けてくれるのは辞書型だけで、辞書型の配列はダメみたいだ。

ググってみたところ、json_normalize -> DataFrame -> concat する手順 を見つけた。

その例に沿って記述してみた。

dict = '{key1:{key2:VVV,key3:[1,2,3,4]}},
        {key1:{key2:WWW,key3:[5,6,7,8]}},
        {key1:{key2:XXX,key3:[9,10,11,12]}}'
new_df = pd.concat( [pd.DataFrame( json_normalize(json.loads(x)) ) for x in dict], ignore_index=True)
print(new_df)

出力結果

key1.key2   key1.key3
VVV         [1,2,3,4]
WWW         [5,6,7,8]
XXX         [9,10,11,12]

希望の結果は得られたけど、実際のデータは 63万行くらいあって、それを読み込むのに 数十分かかった (>_<)

1行ずつ処理しているからなんだろうけど、単に DataFrame 化したいだけなんだから 並列化とかして高速処理できないものだろうか。orz


参考にさせていただいたサイト:


2017/10/23 [長年日記]

_ [SQL]sqlite3 でどんどん溜め込んでいるファイルへのアクセスで "database is locked"

Tick STREAM データを取得して各足を作成し sqlite3 DB へ保存しているけど、 そのファイルに対して別のシェルスクリプトから”直近の1分足" を読み込もうとしたら "database is locked" エラーが発生している (+_+) 頻度は10日くらいに1回くらいかな。

色々とググってみたところ、原因は「書き込み処理中に別処理の要求が来たけど timeout した」 と推測される。

シェルスクリプトから読み込みを掛けているので、こちらの timeout を引き伸ばせないかと 色々とググって見たところ、sqlite3 のコマンド引数で指定できそうだ。(!_!)

とりあえずスクリプトに仕込んでみた。timeout はミリ秒指定。

sqlite3 -cmd ".timeout 3000" -column USDJPYm1.db 'select date,time,close from hd where id=(select max(rowid) from hd)'

これでしばらく様子見してみよう (^-^)/


参考にさせていただいたサイト: