MNIST手書き文字機械学習。TensorFlowチュートリアルの前に、scikit-learnのSVMで復習する。その2。

前回惨敗の正答率だった、SVMによるMNIST手書き文字分類。 まずはscikit-learn付属のデータセットで復習してみることにする。 scikit-learn付属の手書き文字データセットは解像度がひどい こんな感じで試してみると、 from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn.svm import SVC d = load_digits() X_train, X_test, y_train, y_test = train_test_split(d.data, d.target, train_size=0.8) svc = SVC() f…

PHP開発環境を整備しとこうと思ったら、anyenv最高だと思ったけど、OSX環境でうまくいかず泣きをみている件。

知っとくと後々便利そうだと思い、最近いじり始めたPHP。 ブラウザで手軽に実行できるのはいいのだけど、デバッガないのかな?とググってみたら、やっぱりありました。 phpにもデバッガが同梱されていたとは知らなんだ。PHP 5.6 に採用されるデバッガ phpdbg を使ってみた https://t.co/xtMIFKtR4U @shin1x1さんから— takashi ando (@takashi7ando) 2017年2月14日 PHP5.6以降は実行環境に同梱されているんですね。 ということで、OSX環境といえばbrewで・・・ とコマンド打つ前に立ち止まり、そういえばpyenvやrbenv、ndenvがあるくらいならphpenvもあるんじゃ? と思ってコマンド打ってみると、やっぱりありました。 anyenv便利。 bash-3.2$ anyenv install -l Available **envs: Renv crenv denv erlenv exenv goenv hsenv jenv luaenv ndenv nenv nodenv phpenv <-…

MNIST手書き文字機械学習。TensorFlowチュートリアルの前に、scikit-learnのSVMで復習する。

TensorFlowを手持ちのMacにインストールしてチュートリアルを写経...する前に、まずは復習がてらscikit-learnのSVMを使って分類してみようと思います。 久々ですっかり忘れてきているもので。 MNIST手書き文字イメージデータのダウンロード THE MNIST DATABASEからトレーニング用とテスト用の手書きイメージデータをダウンロードしましょう。 以下4つです。 train-images-idx3-ubyte.gz: training set images (9912422 bytes) train-labels-idx1-ubyte.gz: training set labels (28881 bytes) t10k-images-idx3-ubyte.gz: test set images (1648877 bytes) t10k-labels-idx1-ubyte.gz: test set labels (4542 bytes) 手で落としてgunzipしてもいいんですが、せっかくなのでpythonで書いてみます。 MNIST手書きイメージデータを扱うためだけのクラス ダウンロードしてgzip伸長する関数を書くと、こうなります。 …最初メモリを節約しようとgeneratorで書いたんですが、データ数が多すぎて処理が重くなったのでやめました^^; 代わりに、流行り?のasyncioを使います。 MNIST手書き文字イメージデータのDataFrame化 先ほどのクラスを使えば、手書き文字イメージデータをDataFrame化するのは簡単です。 from mnist_dl import…

matplotlibをOSXのpyenv仮想環境下で使用するには。

matplotlibを使いたかっただけなのに、まさかトラブるとは思っていませんでした…。 ちょと前まで普通に使えていたはずなのですが、そういえばSSD換装後にOSXを再インストールして以降、使った覚えがない。 pyenv環境下でmatplotlibを使用するためには色々と下準備が必要ということを今更知り、とりあえず解決したので、その備忘録です。 import matplotlibでいきなり警告 pip install matplotlibは何事もなく成功するのですが、import matplotlibでおもむろに警告が出力されます。 が、これは問題ありません。 フォントのキャッシュを作ってるのでしばし待てと。 OSX再インストール前にも表示されたかどうかは… うーん、記憶にない。 In [11]: import matplotlib.pyplot as plt /Users/takashi/.anyenv/envs/pyenv/versions/3.5.1/lib/python3.5/site-packages/matplotlib/font_manager.py:273: UserWarning: Matplotlib is building the font cache using fc-list.…

Python asyncioのソースを眺めていて、すっかり忘れていた '*' (アスタリスク) 1個が示す意味。

これです。 __init__の引数に '*' (アスタリスク) が1個、ポツンとありますよね。 class Queue: """A queue, useful for coordinating producer and consumer coroutines. ... """ def __init__(self, maxsize=0, *, loop=None): if loop is None: self._loop = events.get_event_loop() else: self._loop = loop self._maxsize = maxsize # Futures. self._getters = collections.deque() # Futures. self._putters = collections.deque() self._unfinished_…

買ってはいけない太陽光チャージコントローラ。

12V/24Vを自動認識してくれる上、驚くほど安いので試しに買ってみたのが、このチャージコントローラ。 Anself 10A12V/24V ソーラーパネル用 チャージコントローラー オートレギュレータ バッテリーシステム 過充電 保護 LCDディスプレイposted with カエレバ Anself Amazonで調べる楽天市場で調べる 蓄電池の電圧をデジタル表示してくれるインジケータ付きなのはとても便利で、実際、とらんじしょん昭島主催のオフグリッド映画上映会ではとても重宝しました。 が、普段の蓄電に使用するには不向きであることが判明。 きっかけは車のダッシュボードに設置した蓄電システムの、曇天時の状況。 ちょっと信じがたい事態が起きたのでした…。 このチャージコントローラが持つ問題点 チャージコントローラ自体の電力消費がデカすぎる 曇天続きだと発電できるほどの太陽光が降り注いでくれないので、チャージコントローラ自身と、負荷側(スマホ充電器とかですね)が消費するだけになってしまいます。 チャージコントローラには過放電防止機能が付いているんですが、その機能でカットできるのは負荷側のみで、自分自身の消費電力はカットしようがありません。 ので、何が起きるかというと、チャージコントローラが蓄電池の容量全て使い切ってしまう!のです。 蓄電池の寿命を延ばすため、通常は容量の半分程度に留めるべきなのに、本当に全部使い切ってしまうんですよね…。 曇天が5日ほど続いたある日見ると、チャージコントローラのインジケータが6[V]程度を示していました。 蓄電池容量は24[V] 24[Ah]。 ほぼ全て使い切ったとみなして、チャージコントローラ自体の消費電流量がどの程度なのか、計算して見ると、以下の通りです。…

太陽光チャージコントローラ TS-MPPT-60 のステータス取得用Pythonパッケージを作ってみた。

自作した自家発電機の状態を監視するシステムの根幹部分をどうやって作ったか、の記録。 コントローラがブラウザに返すhtml/jsをリバースして作ったんですが、一応メーカのエンジニアに問い合わせてOK頂いたので、安心して公開することにします。 まずはチャージコントローラ選別 「発電状況を外部から取得できるコントローラ」って、意外と少ないんです。少なくとも個人で手が出る価格帯の範囲では。 外部から取得できないなら、センサー類を自前で揃えて自作するしかないのだけど、家電が使える容量のシステムだと流す電流量が多いので、それに耐えるセンサーとなると… コストが嵩むことになります。そもそも入手できないかも…。 そこでこのTristar社製チャージコントローラTS-MPPT-60です。 日本円で10万円程度にも関わらず、標準でEthernetポートを備えている上、HTTP経由でバッテリ電圧、太陽光パネル電圧、充電流量、放電流量、ヒートシンク温度に至るまで様々な情報を得ることができる、お得感満載な製品です。 太陽電池充放電コントローラー TS-MPPT-60posted with カエレバ 電菱 Amazonで調べる楽天市場で調べる この情報を収集する手段を用意し、収集したデータをXivelyといったクラウド上のデータベースに記録してグラフ化したい、というわけです。 Tristar社製 TS-MPPT-60 API仕様 TS-MPPT-60から得る情報や、その取得方法の仕様はTriStar-MPPT Modbus specification documentを見れば分かるよと、Tristar社のエンジニアの方が教えてくれたんですが… 結構な文量な上、まさに「仕様書」って感じで読みづらい。 ならば、ブラウザ経由でチャージコントローラにアクセスした際に参照するJavascriptソースを解析した方が、目的達成には近道。 のはず。 発電状況取得方法の検証 ということで、…

日本の男性は、働きすぎだ。

男性は、仕事もして家事育児もしてるとイクメンと言われる。 今日書いた記事。/「 #もしも定時で帰れたら」 が切実で日本やばいと思った。 : まだ東京で消耗してるの? https://t.co/CLHvCxxdtG pic.twitter.com/LMS8LjiNAg— イケダハヤト (@IHayato) 2016年12月10日 子供が熱を出しても、奥さんに任せておけばいいんじゃないか?という意識の上司もまだまだ多いらしい。 確かに仕事から疲れて帰って来てから、やるべきことを終わるべき時間までにやることは大変。 でも、それは今の時代、働く子持ち女性でもほぼ毎日当たり前のように、大体のお母さんは、旦那さんの帰りが遅く、誰に褒められる訳でもなくそれを一人でやっている。 終身雇用もなくなり、給与の羽振りも変わり、物価も学費も高くなり。 一馬力では不安が多い世の中になった。 もちろん女性の生き方に、選択肢が増えているプラス面もあるけど。 昔とはもう全然違うのに、男性の働き方は昔と変わっていない。 日本の男性は、働きすぎだ。…

池田勇人さんによる「新しい働き方」勉強会。近い将来「他社」より「機械」との差別化を迫られる未来。

社長繋がりで開催する運びとなった、池田勇人さんによる「新しい働き方」勉強会。 開催場所は静岡県の掛川にある、これまた社長出資のお店でした。 池田勇人さんのブログに、すごい情報量の勉強会資料が惜しみなくアップされているので、ぜひ一読を。 資料アップしました。/ エンジニア派遣会社「リツアン」の野中社長がイーロン・マスク知らなかったので、掛川で講演をしてきました。 : まだ東京で消耗してるの? https://t.co/c58QnqWnvK pic.twitter.com/w6TjbXW2Ps— イケダハヤト (@IHayato) 2016年12月9日 ここで得た学びは多すぎて書き出し切れないので、特に強く印象に残ったキーワードを軸にしたトピックを挙げます。 made by human 機械と比較して作業が遅く、不正確で、長時間労働できない人に代わって、機械がモノやサービスを提供するのが当たり前の未来になるのは確実。 実際、既に倉庫番や物流、資産運用まで人工知能が活用されている世の中。 機械と比較して生産性が著しく低い人間は、社会に「新しい価値」を生み出す必要があると。 今では "made in Japan" や "made in China" のように使われている言葉が、 "made by…

vimのテンプレート機能でコーディングを3倍楽にする方法。

コードを書き始めるとき、毎回同じことを書くのは時間の無駄ですよね。 典型例がソースコードのライセンス条文だったり、HTMLの雛形タグだったり、Markdownの章立てだったりすると思います。 .vimrcを設定する vimであれば、こんな風な設定を.vimrcに書いといて、テンプレートとなるファイルを${HOME}/.vim/templateに置くだけで無駄を省くことができます。 autocmd BufNewFile *.py 0r $HOME/.vim/template/python.txt autocmd BufNewFile *.md 0r $HOME/.vim/template/markdown.txt autocmd BufNewFile *.uml 0r $HOME/.vim/template/plantuml.txt plantumlソーステンプレートを作成する 特にオススメなのがplantumlソースのテンプレート。 こんな形で予め網羅的に書いといて、.vimrcと一緒に適当なVMSにpushしておくと良いです。 ' sequence diagram @startuml hide footbox actor Foo1 boundary Foo2 control…