注目の投稿

移転

移転しました(2020.03) →  https://akehi.github.io/ ---- ・GitHub Pages使ってみたかった ・HTMLファイルをそのまま公開できるのが手軽でいいなと思った ・・JupyterとかMarkdown+PlantUMLとかで書い...

2016/12/31

母平均・母分散の推定手法


先日「乱数のコク」というパワーワードで(自分の中で)かなり話題になった中心極限定理
https://togetter.com/li/1044668

http://fladdict.net/exp/random/

他にも色々な場面で中心極限定理という言葉を聞くのでいい機会と思ってお勉強をした.

主題は母平均・母分散の推定について.
学んだものとしては大数の法則,中心極限定理,不偏分散,t分布,カイ二乗分布あたり.
あとオマケでデータが正規分布かどうかを確かめる方法である正規確率プロットとShapiro-Wilk検定

かなり面白かったので,今後は以下の項目も勉強してノート作成予定.
・集団の比較 (F値検定?)
・分散分析→品質工学
・確率分布同士の比較(KLダイバージェンス)→機械学習

2016/12/25

null安全とか型ヒントとか

最近流行ってるらしいnull安全という概念.

変数にnullが代入される可能性があるときはコンパイルエラーになるっていう仕様のことを指すようだ.
なんでこんなことするかというと,「nullによる意図せぬ挙動は実行時に初めて分かるから土壇場で困る可能性がある」とか「意図せぬ挙動の影響範囲が大きい傾向にある」とかそんな理由があるらしい.
だからそもそも意図せぬ挙動になる可能性が少しでもあるならばコンパイルエラーにして弾いてしまおうという取り組み.デメリットはコードが少し冗長になること.

2016/12/24

evernoteのクリップ待ち解消


昔,evernoteにいつかクリップしようとURLだけ送ってたノートが400件を超えてた


evernoteAPIをpythonから使って,URLから該当ページ開いてクリップする一連動作を自動化できそう.

自分の技術的に壁になるのは以下のあたりか.
・複数ページを一つに連結 (page=1とか変えるだけ?ヘッダ部のダブリ回避とか必要?html知識無いからつまづきそう)
・画像とかも保存して,元ページが消えても大丈夫なようなクリップ(検証難しそう)
・以前何故かスルーされたAPI利用申請(なんで?)

pythonのbeautiful soupなるモジュールが優秀なパーサらしい.

2016/12/23

Notebook does not appear to be JSON

Notebook does not appear to be JSON
というエラーがgithubから右クリックでダウンロードしたノートを開こうとしたら発生.

JupyterNotebookViewerで開いてダウンロードをクリックしたらエラー起こさずに開けた

http://nbviewer.jupyter.org/


参考
http://stackoverflow.com/questions/22156147/ipython-notebooks-unreadable

オブジェクト指向とはなにか

1.意見

オブジェクト指向プログラミング(OOP) の意味としては2段階あると思う.
1. 実装とインターフェースの分離による仕様変更に強いプログラミング
2. ユーザとのインタラクションが取りやすい,かつ実行時エラーの起きにくいソフトを作るためのプログラミング

1. はライトユーザーが感じる恩恵.別にクラスを使わなくても実現できる.
2. はソフトを売り物にする人たちが感じる(と思われる)恩恵.クラスがないと実現できない.

OOPの考え方を実現する機能=クラス
クラスの役割は3つ
実装とインターフェースの分離をしやすくする仕組みの提供(カプセル化)
コンパイル時の静的型チェックを緩くする仕組みの提供(継承)
・チェックを緩くしたことにより起こる得る実行時エラーを回避する仕組みの提供(ポリモーフィズム)

カプセル化については一般論と同じ意見なので省略

2016/12/18

vbaまとめ

研修で使ったのでメモ

・誰のパソコンでも使える
この手軽さはかなり評価されるべき

・(自分の中で)噂の列挙型使ってみた
これは強力
http://www.aerith.net/design/enum-j.html


・実行すごく早い気がする
実行速度ももちろんだし,コンパイルもいつしてる?って感じ
あとworksheetfunctionの有能感がすごい
二重for文書きたくないときはworksheetfunctionをまず見る.

・variant型便利
あまりよくないと思いつつも,困ったらVariantという風潮が根強い

・Range型は必ずどこかのセルと対応するのが厄介
計算は基本的にセル範囲をRange型で取ってきて,Variant型に代入.そしてデータを加工したら最後にシートのどこか(Range)に書き込むのが良い.
この方法だと計算過程をいちいちセルに書き込まなくていいから高速(書き込み時間+Excelがセルを評価する時間削減)
しかもセルを計算過程の数字で汚さないからいい感じ.

・Range型の可能性は無限大
あるセルを変化させると関係セルが再計算される仕様がリアクティブプログラミング的.シリアル通信も頑張ればできるっぽいし、実はロボット制御とか糞やりやすい説が浮上しつつある

・クラスコンストラクタに引数渡せない
factory的な関数作ることで対応しないといけない.これだけは本当に対応してほしい

・継承できない
別に使わないけどさ
内部のクラスはバンバン継承してるから羨ましい

・関数を引数に渡せない
mapとかfilterみたいなことをしたいときに不便かも.

・関数の引数は実は全部参照渡し
途中まで値渡しと勘違いしてた
たまたま詰まなかった。良かった

・コンパイルエラーがひたすら分かりにくい
キレそう

・activesheetの呪い
ただ単にCells(~~)とかRange(~~)とか書くと,ActiveWorkbook.Activesheet.Cells(~~)の省略と解釈される.
だから油断すると,開いてるシートを変えたり,別のエクセルファイルを開いたりしたときに挙動が変わる.
省略せずにブックとシート名を指定してやるのが精神衛生上良い.

・Initializeのタイミングが勘違いしやすい
formが画面上に生成される度に呼ばれるのではなく,formのメソッドが呼ばれたときに一回だけ呼ばれる(from.show以外のメソッドが呼ばれて画面上にform表示されてなくても呼ばれる).formを開く度に呼び出したいならonActiveみたいなやつ推奨

クリティカルパスとは一体


プロジェクト管理の話でクリティカルパスという話は絶対出て来る.

でもクリティカルパスを導くためのタスクの順番をどうやって決めるか,という問題には大抵触れられていない.

一般的な解説ページなどでは,タスク数は高々10個程度.だから人間が適当に作ってもだいたい最適なスケジュールが組める.でももっとタスクが増えて依存関係が増えたら難しい.一時間費やしてスケジュール組みましたみたいな本末転倒なことが起こり得る.

完了時刻和最小化スケジューリング問題を発展させて,タスクの依存関係や各タスクの必要人員を考慮した予定組みってできないだろうか.NP困難臭がすごいけど.

応用先が広そうだし,組み合わせ最適化とかグラフ理論とか詳しく学びたい
http://dopal.cs.uec.ac.jp/okamotoy/lect/2013/localsearch/lect01.pdf

2016/12/04

二次形式の極値問題とレイリー商

レイリー商という便利な概念があるっぽい

http://kensuke-mi.hatenablog.com/entry/20121108/1352352860

http://d.hatena.ne.jp/Zellij/20140818/p1

レイリー商の最大値,最小値と,二次形式の表現行列の固有値との間に関係がある.

二次形式と固有値って聞くと,C-LAMBDA法に共分散のSVD分解を使ってアンビギュイティ候補の範囲を絞り込んでいるイメージがある.
何か関係するのだろうか.