百折不撓

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

tensorflowの導入って大変(tornado, pip install tensorflow)

 Anaconda-Navigatorでtensorflowをインストールする際に、てこずったので自分用メモ。てこずった点は2点。

  • 仮想環境を作ると、その環境ではjupyter-labが開けなくなった。
  • tensorflow2.1がcondaからインストールできなかった為、pipからインストールする必要があった。

書いてしまうと、なんて事はないのですが、自分の中ではこれが同時に起きて問題点がこんがらがって、怒髪天を衝く状態でした。え?髪が無いじゃないかって?ガハハハッこやつめ、まとめ終わった後に死刑じゃ。

 簡単に環境:
 Windows 10 Home (ケチらずProにしとけばよかった)
 Anaconda Navigator 1.9.7
 Here we go!!

  • 仮想環境を作ると、その環境ではjupyter-labが開けなくなった。

 base環境では開けますが、仮想環境を作るとあかんのです。こちらの問題は、ちゃんとした原因は追究できませんでしたが、どうやら、jupyter-labをインストールする際の依存ライブラリ(何て呼ぶか忘れた)であるtornadoのバージョンの問題の模様。 6.0.3 -> 6.0.2でjupyter-labがchromeで開けました。バージョンの問題があるので、試行錯誤の末、以下の手順で落ち着きました。

conda install tornado=6.0.2
conda install jupyterlab

おそらくこの順番で、tornadoのバージョンは6.0.2になってくれると思います。先にjupyterlabを入れるのはうまくいきませんでした。
この順でもうまくいかなかったら、ごめんなさい。他をあたってください。
Jupyter Labの導入|infohub - Development
Python 3.x - 自作の仮想環境をjupyter notebookで起動したい|teratail

  • tensorflow2.1がcondaからインストールできなかった為、pipからインストールする必要があった。

 遊ぼうと思っているサンプルコードがtensorflow2.1で書かれているため、バージョン指定してインストールする必要がありました(20200210時点の最新版)。しかしcondaでは2.0までしか見えないので、pipに頼ります。condaとpipがパッケージ管理ツールとして別物ってのは知っているんですが、なんでcondaは更新?遅いんですか?condaが探しに行くレポジトリを自分で変えなさいって話かもしれませんけど(確かできますよね)。
 兎にも角にも、こちらは2.1が最新版なのでpipに頼って以下。

pip install tensorflow #ちゃんと2.1指定するならば、=2.1 (==2.1?)でバージョン指定

 これで僕もdeeplearnerだ!!
 ※tensorflow2.0系になって、巷の記事にあるtensorflowの"Hello, World"がそのままではできなくなっていました。
こういうの↓
【Python/TensorFlow】動作確認テスト(Hello World) | 技術雑記
また別に書きます。

冥福

 大学の時の研究室の先生の訃報を聞いた。
 亡くなったのがいつなのか正確なところが分からないけれど、去年2019年の12月には亡くなられていた様である。

 世話になったかと言われると、感謝の気持ちで心が揺さぶられる事もなく、逡巡してしまう。
 先生との一番古い記憶は、大学1年の頃に受けた授業であるはずだ。この授業はmathematica と言うソフトウェアを使って、色々な計算をしてみましょうと言う、後々のCやC++の為にまずはパソコンに慣れましょうという授業だった。今じゃもう解けない気がするが、減衰振動の微分方程式を解いてもらってえらく感動した覚えと、虚数が発生してエラーを吐かれ苦汁を飲まされた覚えがある。
 その次は大学2年の時だったはずだ。基礎統計学の授業だったが、さっぱり分からなかった。こういう所を突き詰めるのが学問の道なのだろうが、僕は道に憧れるだけど、そんな事はしなかった。今更に恥ずかしい。因みに、この単位は一度落とした。ただ、先生は甘い人で、夏休み前に「点数が足りないので、レポート出してください。」と言った旨を僕の学内メールに送ってくれていた(これに気付いたのは夏休み後であったが)。学生から見ると、どの授業も大らかな人だった。悪く言えば、テキトーな人だった。いつも、ニコニコ微笑んでいるような人で、心地の良い人だったように思う。
 次に会ったのは、大学4年。研究室配属された時だ。前期の間は週一でLeoの黄色本の輪講を4年生で行ったが、それ以外に何を言われたかはさっぱり覚えていない。何かやれとテーマを与えられた覚えもない。4年生のメンバーそれぞれが、研究室内にあるいくつかのオプションを提示され、それぞれが興味のある所にいった。人によっては研究室のNIMやらCAMACで遊び、人によってはKEKに行って遊び。僕はこの時、ミューオンの寿命測定を行った。

 朗らかな人だったが、厳しい人だったのだと思う。僕らは自分たちで選んで、自分たちで試行錯誤しなければ、何かしらの成果を出すことができなかったのだから(僕はうまく寿命を測れなかったが)。けれど、それは研究であったり、学問の道に進むには必要な態度、素養なんだと思われる。自分で考え、自分で決めて、行動する。そういうチャンスを貰えたのだ。いろんな視点から先生の事を見る事は出来るが、僕から見た先生は、そういう事を僕の人生に加えてくれた。あんまり期待通りの結果は出せなかったのは、本当に今でも悔しいけれど、気付ける事があったからそこからどうするかが、肝要だ。教えてもらった恩は、次に繋げて返さないと水の泡だ。

 「ご冥福をお祈りいたします。」と言う言葉がある。僕はあまり好きじゃない。先生の死後を祈るという事は確かに意味がある事なのだと思うけれど、それよりもまず僕は悲しいし、寂しい。先生の事を思うと、今はそれ以上の気持ちは浮かんでこない。この気持ちはこのままに、明日も仕事ちゃんと自分の出来る限りに行いたい。

How awesome it is!!

 つい先ほど、pandas-profilingというライブラリを知りました。簡単に言うとdataframeの各列の基礎統計?をしてくれます。それをhtml形式とかでも保存できるっぽいです。

df.describe() 

みたいな事してもいいですが、ヒストまで出したり、value_counts()とその全体での割合とかも出してくれるので、ちょっと触ってみた感じどちゃクソ便利です。

簡単な使い方は以下の感じ。

import pandas-profiling as pdprof

df = pd.read_csv("./hoge.csv", parse_dates=True, encoding='UTF-8') 
#読み込む際のオプションは、こうしなければならないか不明。詳細は本記事最下の参考記事

df_profile = pdprof.ProfileReport(df)
df_profile.to_file("student_mat_profile.html") #html形式で出力内容を保存できるみたいです。超キレイ!

jupyter labのnotebook内だとなぜか型崩れして見にくかったので、html形式で保存したらとても見やすくざっと眺める意味ではとてもよいとおもいました

参考記事
【Python】 Pandas-Profilingを使ってみた - St_Hakky’s blog

get together with

 最近15分程度つかって3問程度だけ英語の問題を解いているのですが、初めて全問間違えました。熟語を知っているか問われているような問題もありましたが、全問前置詞に関する問い。難しいですね、前置詞。
 解いていて初めて知ったのが今日のタイトル。どうやら熟語?の様で、"I wanna get together with you as soon as possible!!"(今すぐ会いたいよ!)的な意味合いらしいです。これは、恐らく、ニュアンスがかなり違っていて、"get together with XXX"(XXXに会う)位にしか理解があっていないと思われます。第一、んなら"I miss you"でええやんって話なわけで。
 この熟語を知った事より、自分がその文を読んでいた時にあまり気にかけず何となく「主語と目的語が近いんだな」位にしか理解していなかった事に気付けたのが、大きな収穫でした。英語に限らず、計算でも何でもどんどんぼんやり「こん位だな」という理解をするようになってきました。これはメリットもあって、ざっくりとした方向性を見出すことにそこまでエネルギーを使わずに済むという事です。しかし、その余ったエネルギーで精査しないと、こん位でええやろ(ハナホジーでテキトーに進んでいって、結局間違っていたなんて事になるのでしょうね。
 英語は言葉なので(数学もですね)、相手が伝えたいことをちゃんと理解するには最後までちゃんと読む。基本に帰ります。

JupyterLabのフォントとか

JupyterLabだとターミナルを開いて操作もできますが、デフォルトのフォントがちょっと気持ち悪い。そこで設定を変えました。
Setting >> Advanced Setting Editor >> Terminal
を開くと”Default”と”User Preferences”の設定が開かれるので、後者に自分の設定を書き加えていくことで好みのフォントにしたり出来ます。

{
    "fontFamily": "Meslo"
}

自分はなんの言語かすら怪しいですが(jason?)、上記のフォント設定しました。いったいどこまでの種類のフォントが使えるのか不明ですが以下の記事が参考になりました。
jupyter-themes の fontについて - Qiita

またnotebookなどの設定ももちろん変えられて、物は試しで、こちらの方の記事に倣っていろいろといじって試してみました。
Jupyter Lab入門の入門|てくてくぷれいす

※メモ:この記事に従う際、nodejsをcondaからインストール。
※メモ:インストールしたのは、
git
toc
variableinspector
statusbar
jupyterlab-drawio(追記:ファイルをpngなどに出力するときにエラーになって対処法が不明なので一旦、disable)
(jupyterlab-sqlは検索に引っかからなかったので、SQLをたたく機会があまりないので省略した)

まだどれくらい便利なのか試していませんが、どうなりますかね。

locについて

 恥ずかしながらpandasのlocに条件を入れられる事を最近知りました。。。row, column名で指定した要素か、スライスを使用して配列を取ってくるしか出来ないと思っていました。個人的にふぁ!?ってなった使い方は、

age score
22 50
22 60
26 0

大学4年生の最後の試験でこんな事になってしまった時に、ゴッドハンド発動で

df.loc[df["age"]>=25,["score"]] = 60 #["score"]は代入する列指定。複数指定も可能

としてあげて、

age score
15 50
15 60
20 60

これでもう安心だねって。日々精進。