機械学習の結果を保存する
学習させたモデルを保存しておきたい!
学習結果の保存
要はオブジェクトをシリアライズさせておけばいい。概念としてはオブジェクトを名前を付けてファイルに保存して、使う際にはそのファイルを開いてオブジェクトとして使うというイメージ。
この処理を応用したら、ディープラーニングとかで大量の餌を食わしていく過程で「今日の学習はここまで。明日はその続きを」なんてことが可能になるかもしれない。
ということでpythonには標準でpickle(漬物:特にピクルス)というモジュールが用意されており、これを使えばシリアライズができる。
- pickle
12.1. pickle — Python オブジェクトの直列化 — Python 3.6.3 ドキュメント
import pickle target = [1, 2, 3, 4, 5] fname = 'test.pickle' print(target) # [1, 2, 3, 4, 5] # リストオブジェクトをpickleを使ってダンプ with open(fname, 'wb') as f: pickle.dump(target, f) # pickleを使ってリストオブジェクトをロード with open(fname, 'rb') as f: target2 = pickle.load(f) print(target2) # [1, 2, 3, 4, 5]
機械学習ライブラリであるsklearnには、joblibというモジュールが最初から用意してあった。まぁ学習結果の保存はやりたいですよね。ということで方法2
- joblib
3.4. Model persistence — scikit-learn 0.19.1 documentation
import sklearn.externals import joblib clf.fit(X_train, Y_train) # clfは何らかの学習モデル pre1 = clf.predict(X_test) fname = 'test.joblib' # joblibを使ってオブジェクトをダンプ joblib.dump(clf, fname) # joblibを使ってオブジェクトをロード clf2 = joblib.load(fname) pre2 = clf2.predict(X_test) # pre1とpre2は同じ結果が出るはず(X_trainが同じ値なら)
コード
jupyterによるコードはコチラ。IRISを学習させ、結果を保持しておく。オブジェクトを復元させて同じ結果が出ることが確認できる。
irisのデータセットをpandasで使う その2
A「オイオイオイ」
B「楽だわこっちのほうが」
これまではirisのデータセットをsklearnから引っ張ってきたけど、seabornから引っ張ってこれるみたい。何気なく使ってるけど、seabornって本当はなんのライブラリなんだろうと、いよいよわからなくなってきた。
seabornからiris
ということで、irisを使いたければこれで済む
import pandas as pd import seaborn as sns iris = sns.load_dataset("iris") iris.head()
戻りはpandasのデータフレームで返される。
他にもタイタニックとかがある。
titanic = sns.load_dataset("titanic") tips = sns.load_dataset("tips")
詳しくはgithubを見たらいい(そんなにない) github.com
JupyterをIBM Cloudで動かす
ようやくこれでiPad de Jupyterができる
Data Science Experience
参考記事 qiita.com
IBMCloudに環境を作ること自体はこの参考記事の通りやればできる。なんも難しい事はないが、接続先のホストが恐らくアメリカ南部とかその辺なので、日本からやるとレスポンス的にあれだという事。各種設定をIBMCluodのダッシュボード上でポチポチとボタンを押していく作業をするのだが、ところどころ考え中のアニメーションから帰ってこない事があった。いくつかそういったポイントがあったが、我慢強く待つことでIBMCloudを使う資格が与えられる。
各種設定を行ってからPCのブラウザ上でJupyterを動かすことは確認ができた。
上記コードの通り、pandas、numpy、matplotlibが一通りそろっているので、すぐにでも動かすことができる。確認したらsklearnもあったので機械学習的な事も出来る。どうやらバックグラウンドとしてはanacondaが環境として入っているのかも。
スクリーンショットはないけど、iPadでも同様に見ることができたし、実行もできた。ただやっぱりレスポンスに難があるのは何ともしがたい。それでもとりあえずの目標はクリアできたかなというところ。
IBM Cloud
このニュースに踊らされた技術者は少なくないと思う。Watsonが全面的に無料になるのではなく、このIBM CloudのLite版で使えるいくつかのWatsonAPIが無料になるだけだということだ。とりあえずJupyterを動かしたくてIBM Cloudにアカウントを作ったわけだが、このようにWatsonとかも(少なからず)使えるので、時間ができたら他にもいろいろ試していこうと思う。
2017年富士通フロンティアーズ社会人制覇
いやーすごい点差のゲームでしたね。
ZINRAI vs Watson
富士通対IBMなので当然そう見てしまう。開幕1Qで赤き富士通は疾風迅雷のごとくキックオフリターンタッチダウンを決める。その直後、浮足立つ相手のスキを見逃さなかった青のワトソン君はインサイドからランを決めて同点。1Q開始からそれほど時間がたっていないのにこの展開、まさかの殴り合いが始まる予感がビンビンしてくる。が、落ち着いた迅雷はその後も着実にタッチダウンを重ねていき、最終的には63-23とあまり見たことのない点差のゲームとなった。
富士通
なんといってもQB。この日はWRへの投げ分けがうまくいき、どこへ投げてもパスが通る。特にWR中村へのパスは200ヤードを超える成績で、このコンビで爆発的に得点を取ったといっても過言ではない。スタッツをよく見ると、ランによる獲得ヤードも富士通QBがチームNo1という大車輪の活躍だ。さらにさらにサックも0で危なげない試合展開を見せる。おまけにFGによる得点もなく、すべてタッチダウンによる得点だった。
結果だけ見れば本当にでき過ぎで、ワンサイドゲームだったといえる。
IBM
試合序盤はランプレイが光るも、3サックな上QBの獲得ヤードも-13となかなかの結果。QBをプレイによって切り替えたりとあの手この手を尽くすも富士通DFに阻まれて、FGばかり決めるドライブが続く。ここぞというプレイでインターセプトをされ、何をやってもうまくいく富士通に対し、何をやってもうまくいかないといった様子。
IBMのRB、なんと京都大学ですよ。しかもこのRB、足がとてつもなく早い。ズバズバとカットしていく様は本当に興奮した。配られたパンプレットにあったロースターを見ていたらハーバード大学もいたような、、、さすが外資系の会社は選手層も面白い。
その他
- ハーフタイムショーにNOKKOが来てた。フレンズを歌うあたり、客層をわかっているというかなんというか。
- チアはやっぱりいいね。見ているだけで元気が出てくる。
- ふろん太君も応援に来てた。でも君は見た目青いね。そういえば富士通はJ1に続きXBowlも取ったことで、日本のフットボールを完全に制覇したことになるな
- 場内解説が丁寧すぎて面白い。1プレー1プレーを解説してくれるのは良かったが、スタジアムDJも含めてちょっと富士通よりか?
あぁ面白かった。ライスボウルも見に行っちゃおうかなぁ
AUKEY PB-N42
SoundPeats Q12 Bluetoothイヤホン
2017年末のアマゾンのセールで唯一買ったものがコチラになります。
イヤホンとは消耗品である
SoundPEATS(サウンドピーツ) Q12 Bluetooth イヤホン 高音質 apt-X対応 マグネット搭載 マイク付き スポーツ ブルートゥース イヤホン ブラック
- 出版社/メーカー: SoundPEATS(サウンドピーツ)
- メディア: エレクトロニクス
- この商品を含むブログ (4件) を見る
前回買ったのが2016年8月ということで
1年ほどしか持たなかった計算となる。故障の原因も断線によるもの。これだから高いイヤホンなんかには手が出せない。アマゾンのセールで2000円ちょいだったので、前回のものとはそれほど値段が変わないでBluetoothイヤホンにステップアップできた。
今使っている電話はまだイヤホンジャックがある型のものなので、本当はワイヤードなイヤホンでもよかったんだけど、ひょっとしたら断線には強いのかもしれないという期待を込めてワイヤレスに望むこととなった。
感想
音質については及第点があげられる。外で聞くのにそんなに音質は求めないので極端に音がこもってなければ合格となってしまうアマアマな採点基準ではありますが。
Bluetoothイヤホンの宿命であるハウジングがでかくなるのはしょうがないところだけど、実際に装着してみても重さは感じないので問題はない。早速装備してランニングに出かけたが、あまり走っている間に取れそうな感じとかそういうのはなかった。バスケとか激しく運動したら違うかもしれませんが、ランニングくらいならこちらも問題なしです。それにマグネット、これが便利すぎる。こういう工業デザインをしちゃう人って本当に尊敬する。
気になるのは充電するところのフタがしばらくしたらバカになってとれちゃうんだろうなぁという印象。まぁ値段もそれほど高くないのでそんなものかなというところ。
ということで総じて満足です。どれだけもってくれるかわかりませんが、2年もてば上々かなと思います。
色?もちろん赤です。
paiza.ioなるもの
2014年頃開始したサービスなのに、今頃知ったなんて言えない。
paiza.io
動機としてはJupyterをiPadで動かしたいなぁと思い、環境を考えていた。Jupyterの公式にTry Jupyter!ってのもあって、iPadでも動くっちゃ動くわけだけど、コードも残せないしどうも使い捨て感があり、食指が伸びない。使っているノートにLinuxサーバを立てておいてJupyterを動かすってのもやったけど、ノート自体を持ち歩きしているので常時稼働しているわけではない。というよりノート持ってる状況ならわざわざiPadでやることもないし。やるとしたらサーバーでも借りてやるんかなぁとか考えていた。要はiPadでコードを書きながら日曜プログラミングをやりたいって思っていた。
ということでいつものごとくサーフィンをしていたらどこか(たぶんQiitaあたり)でpaiza.ioなるサイトを使ってコードをシェアしているのを見かけた。これはということでiPadでアクセスしたらコードが実行できる!すばらしい!
ここがすごい
まずは一番の売りである言語について。何種類もの言語が対応しているのでpythonはもちろん新参者のSwiftだってできるし古株のCOBOLだってできる。変わり種でいけばMySQLだってできるし、bashもできちゃう。これでちょっと試したいけど環境がないってことがなくなるので、プログラミングがぐっと近くなる。
選べる言語一覧は現時点でご覧の通り。Rもあるんですよ。
もう一点としてはこれ。
タブの+ボタンを押せば、複数ファイルの作成、実行が可能。 プログラムファイルとデータファイルに分けて、データファイルを 読み込む、というような事も可能です。 画面にファイルをドラッグアンドドロップすればファイルアップも可能です。
データファイルを適当に作って、そのデータを使ってプログラムが処理するってこともできる。Rでも読み込めるし、python使ってpandasだってできちゃう。すばらしい!
ただ、グラフが出せない。Rなんてこれだけでグラフが出るのに。
plot(cars)
現状paizaでは無反応。Jupyterでは呪文を唱える必要はあるが、ブラウザ上にグラフがでる。python使ってmatplotlibやりたいけどそれはできない。今後に期待
他にもブログ埋め込み機能とか、GitHub連携とか便利な機能がある。
今後に期待
このサイトを使ってiPadで日曜プログラミングができそうということが分かった。もうね、休日はPCを開くなんてことはしたくないんですよ。iPadで十分。ちなみにこの会社、自ら同じようなサービスを紹介するという懐の深さもある。今後のバージョンアップに期待。 paiza.hatenablog.com