百折不撓

データ系の新米エンジニアとして戦闘中。

将棋の話

 先ほどまでネット将棋を指していました。将棋ウォーズはそれはそれで楽しいのだけれど、考えないで直感的にぱっと見えた手を指さないと厳しいのが将棋ウォーズ。しかし、自分はまだぱっと手が見える程鍛えられていないので、考える時間が欲しいと思ってネット将棋を久々に指しました。
 戦型は横歩取りで、こちらが後手(先手が横歩取らずを選択しましたが)。定跡は全く分かっていないけど、横歩取りは地雷原を歩くような怖さがあって楽しい。序盤で踏んじゃうと相手に申し訳ないってのはありますが。感想戦がなかったので、途中でこれでどうだろうと(そっちが忙しくないですか?と)思った局面を将棋ソフトにかけてみたらまさかの敗勢で、ちょっと進めて見てみたら凄い綺麗な王手龍を食らっていました。
 しかし、考えて将棋が指せたので、その喜びに感謝して少しでも楽しく指していきたい。

fancyimputeをAnaconda環境で入れる

 まず初めて断っておくと、動いているからヨシ!の精神でやりました。condaとpipも混ぜてます(そもそも何故混ぜちゃいけないのかも知らん)。ご留意を。

 『前処理大全』と言う本を読み進みていて、fancyimputeを使った写経をする際に、ライブラリのインストールが必要になったので、その時のメモ。いつもの通り、巨人の肩に乗りました。
fancyimputeをインストールしてみた - Qiita

 fancyimpute自体をインストールする前に、いくつかのライブラリをインストールしないといけないとの事。

'six',
'numpy>=1.10', 
'scipy',
'scikit-learn>=0.19.1',    
'keras>=2.0.0', 
'np_utils', #<-これはkerasのクラス?
'tensorflow',

#以下のライブラリはpipから
'knnimpute',
'cvxpy>=1.0.6'  

 cvxpyをインストールする際は、本家に従った(Visual StudioC++コンパイラ?が必要なるらしい)。

pip install fancyimpute

こんな記事もあったので、参考にして頂ければ。

 これでインストールは出来たのだけれど、『前処理大全』で使用しているMICEクラスが最新バージョン(0.5.4)では無い!公式ドキュメントを読むと、どうやら(0.4.0)以降はMICEを削除した模様。読み切れていないのですが、多重代入法と単一代入法のどっちが良いかとかその辺りの学問的な議論が続いていて、止めたっぽい?事情を知っている方いたら教えて下さい。
 なので、どうしても使いたいなら、

pip install fancyimpute==0.3.2

 とかしてあげる必要がある。

読まないと書かないと腐っていく

 最近、読書をする機会もめっきり減っていることにやっと気づきました。仕事をしていても論文を読むようなこともなく、技術書を読み進める事はあっても、部分部分の理解が出来ればよい事が多く、大意を理解し見通しを立てていない自分に、これはいけないとなりました。これが出来ていいないって事は、自分のしている仕事の見通しも立っていない無能だって事を露呈していて、更に危機感を感じます。
 そんなわけで、スマホ・PCには一切触れず、本を読む機会を寝る1時間前に設ける事に決めたのですが、長めの文章を読んでいると、文が頭を滑っていき、少し訓練が必要だなと思う次第です。ただ、それでもやはり本を読むのは面白く、なんで読まなくなったんだろ?(多分スマホと言う麻薬)って感じなので、今までの習慣を変えるために、自分で意識して時間を割いて行こうと思っています。

 こういう事が続くのは大抵1週間が良い所です。大抵、疲れた、めんどい、楽がいいと低きに安定します。Youtuber(?)のまこなりさん曰く「人と会う約束をしろ」ってのが、習慣を変えるのに良いとの事ですが、就寝1時間前の読書に付き合ってくれる人がいるものでしょうか?えっ?嫁を作れって?ガハハハッ、こやつめ面白い冗談を言いおる。死刑じゃ!!

 ひとまず、こうして文章を残すことで、定着を図ってみます。けど、結局このブログ見ている方、ほぼほぼいないので、まずは読んでくれる方を見つけるところ、作るところからですね。

 最後に。うーん、まとまりのない酷い文章だ。

※マコなり社長のYoutubeチャンネルはこちら(個人的には面白いと思います。)
www.youtube.com

spyder w/ Kite

 Anaconda NavigatorがSpyderを更新を促さないので、"conda update --all"で全部いっぺんに更新してしまった。
 いつの間にかSpyderは4.0.0が出ていたらしく、3.5.5(0?)->4.0.0の更新となった。その際、Kiteと言う、エディタに補完機能を加えるアプリケーションを入れろやと言われたので、バカみたいにインストールしたので忘れないようにその事をここにメモしておく。
 Kiteを入れたエディタは、Spyderだけ(のはず)。
 Kite自体のインストールは以下の手引きに従った。
Download Kite for Free - AI Autocomplete for Python - IDE Plugin

 以上。

【追記】
 Kiteの機能を停止する場合は、Preferences -> Completion and Linting -> Advancedから選択可能。

f:id:RyojiT:20191209225320p:plain
Preferences Window of Spyder

Cubic -> Round

ある連続変数の列を100区切りの単位で区切った時の最頻値は?って聞かれて、hist?とか色々頭に巡ったのだけれど、ビン幅のサイズの指定の仕方が分からなかったりしたのだけれど、四捨五入するって手があるとは!
 区切りの始まりと終わりは変えられないけれど、頭の体操みたいで新鮮でした。

try and error

 先ほどからcss?はてなのブログデザインでstylesheetをいじっていますが。文法をよく分かっていなので、ブログのデザインがめっちゃずれています。
 が、もう眠いので、何となく見れるような感じになったので、寝ます!こんな辺境に来てくれた方、すみませんでした。何か良い情報あったら、教えて下さい。
 おやすみなさい。

【追記 201911123】
 あきらめも肝心。結局、デフォルトに戻しました。前にいじった時のものが何しているのか思い出せなかったので。

df.query()の使い方のメモ

恥ずかしいけど、覚えた事を復習。

String Number
a 0
i 1
u 2
e 3
o 4

こんな表(tmp.csvとする)があった時に、以下のようになる。

import pandas as pd

df = pd.to_csv("./tmp.csv")
df.query("1 <= Number <= 3")
String Number
i 1
u 2
e 3

String列の文字列で抽出したい時は、条件全体は「'」でくくり、文字列自体は「"」でくくってあげると以下のようになる。

df.query('String == "a" or String == "i" ')
String Number
a 0
i 1


糞なのは、以下。

ho = "a"
ge = "i"
df.query("String == @ho or String == @ge ")

いやー、普段SQLを書いていないのもバレるし、そもそも・・・って、恥をかきました。

がんばる。