PyConJP 2014 2日目の感想
ちなみに1日目の感想はこちら
http://mzmttks.blogspot.jp/2014/09/pyconjp-2014.html
目が覚めるといい感じの時間だったので午前の感想は無い
感想
まず、期待よりもずっと楽しいカンファレンスですごく楽しめた。
ご飯もおいしいし、発表も面白いし、いろいろ知り合えたし。
スタッフのみなさんありがとう!
言語仕様を安定させたいという Core Developers の方針なのか、
scipy/numpy/scikits みたいな科学技術系パッケージが多いからなのか、
思ったより研究者やPhD が多かった。
ちゃんと理論やる系発表と実装系発表をわけると興味がマッチするのかなあと思った。
パッケージメモ: wheel / devpi / PuLP
聞けなかったけどスライドシェア
OpenCV の python インタフェース入門
スポーツ動画からの姿勢推定をしている博士課程の学生 (ブログ)
資料はこちら
ちょっと資料の文字が小さかったけど、最初に資料の URI を出してくれたので
特に問題はなかった。
注意点
- OpenCV は BGR (Blue-Green-Red) の順だけども、
それ以外 (matplotlib/PIL/scikit-image) は RGB なので注意。 - mlはあるけども、scikit-learn とかの方がよくそろってて良い。
話を聞きながら自分でハンズオンしようと思ったけど、
brew install opencv
で Python バインディングが入らなくて悲しい気分になった。
入門ってことで、インストールの方法とか最初に言ってくれると
聞きながらできてよかったかも
Python と scikit-learn ではじめる機械学習
たまに twitter で見かけたけど s/機会/機械/
Naive Bayes でスパムフィルタを学習してみましたって話。
形態素解析ツールで Mecab / kuromoji / ChaSen を紹介していて、
kuromoji は知らなかった。
まずは ML 系の python パッケージを紹介していた
パッケージ系
- scikit-learn
- gensim
- nltk
- R
- Julia
ミドルウェア系
- Jubatas
- Spark + MLib
- H20
- Mahout
使用データ: SMS Spam Collection Data Set
spam: スパム
ham: 非スパム
のラベル付き。 spam/ham ってラベルが標準なのね。知らなかった。
手順
このへんは、見ながらメモったので適当。 あとで試して記事書くかな。
- 読み込み: numpy.genfromtext
- 特徴量抽出: CountVectorizer, fit_transform で 単語とメールの行列に変換
- 学習: scikit-learn の naive_bayes の Multinomial で学習。
Gaussian (正規分布), Multinomial (多項分布), Bernoulli (ベルヌーイ分布) が選べる。 - 評価: cross_validation でクロスバリデーション —> 96% ぐらいの正解率
- 予測: predict
まあその、ちゃんと学習からクロスバリデーションによる評価までしていたので
よかったと思ったが、なんというか聴衆の事前知識量 and 興味はだいぶ広そうなので
難しいなあと思った。
数理最適化によるパズルの解法
資料は ipython notebook で公開されてる。http://goo.gl/kAbWrA
技術者のためのゲーム理論の基礎 というチュートリアルをやるそうで、
もれなくOR学会 の会員になれるっぽい
PuLP でいろんな問題を解けるよーという話。
紹介されてた日本語の数少ない (らしい) 解説ブログ記事は
Pythonで整数計画問題・線形計画問題を解く(PuLP編)
ポイントは、
- LpProblem: 数理モデルのオブジェクト
- LpVariable: 変数。連続、整数、バイナリを選択できる
- LpAffineExpression: 目的関数
- LpConstraint: 制約
よく使う関数は
- value: 値の取り出し
- lpSum: 変数の総和?
- lpDot: 変数のドット積(内積)
数独の制約条件が、
変数を vijk というバイナリ変数で表現して、
座標 (i, j) の値が k のとき 1, そうでない時 0 となると定義することで
エレガントに表現できるのにだいぶ感動したんだけども、
さらっと流されてしまった。
この辺の制約条件 and 変数の設計の妙がキモだと思うんだけど、
そういうのは OR 学会で聞けって話なんだろうか
パッケージング @aodagi
1. 使う
pypi
cheeseshop が前身の PyPI サーバ、
最近は warehouse という次世代サーバが準備されていて、
https://warehouse.python.org でアクセス可能。
pip
SSLを通さない場合アクセスしなくなったので、
-allow-external / -allow-unversioned とかがいるらしい。
ほかにもオプションがいろいろあった。
- -f http://localhost:5000
このオプションを入れると、ローカルの PyPI サーバに
アクセスする。その作り方は後述。 - -r requirements.txt
依存パッケージを丸ごと入れられる。
pyramid==1.5.1
git+https:// …
みたいな感じ。
さらに、-r を中にかけるので構造化できる。 - —no-index
外に見に行かないオプション。これとローカル PyPI サーバとか wheel (後述) を
組み合わせると、外部アクセスしなくてもテストとかができる。
wheel
Python のパッケージを、依存ライブラリも合わせてまるごと入れる
(ベンダリングする)ツール。
pip install wheel で pip wheel が使えるようになる。
pip wheel pyramid で、wheelhouseというディレクトリに依存も含めて全部入る。
で、pip install -f wheelhouse pyramid …. —no-index
とかやると、全部ローカルから入れられる。
2. 作る
setuptools
setup.py を作る。 今後宣言的になっていくので、setup関数を呼ぶだけにすべき。
- description = 1行だけ。
- packages = 入れたい python パッケージ
- namespace_packages = 名前空間がかぶってもよいという宣言。
- long_description = 詳細な説明。 reST でいろいろ書く。
- install_requires=依存パッケージ
3. もっと活用する
PyPI に完全公開
python setup.py register
python setup.py sdist bdist_wheel upload
Github / Bitbucket から公開 (URL 知ってる人だけ)
git tag 0.0
git push —taggs
pip install -f https://...github.../archive/v0.0.zip
みたいな感じで入れられる。
devpi (ローカル PyPI サーバ)
pip install devpi
PyPI のプロキシ (キャッシュサーバ) としても働く。
内部向けパッケージの公開、公開前の練習とかに使える。
名前空間を切れるので1のサーバだけでみんなで使える。
使い方
聞きながらのメモだったので不正確かも。
devpi-server —start
pip install -i http://localhost:3141/root/pypi/+simple/YOURPACKAGE
ユーザ作成
devpi user -c USERNAME password=PASSWORD
devpi login USERNAME --password=USERNAME
アップロード
devpi index -c aodag.hello
devpi use aodag.hello
devpi upload --formats "sdist,bdist_wheel"
LT
野球プログラミング
JIRA, Cacoo, Bitbucketを使ってるよーという紹介。
トークでは野球データの解析をしてた (BABIP / ピタゴラス勝率)
に加えて、三振王らしいアダムダン率の話。
Technology that underly PyCon JP
PyCon JP のチェアによる運営ノウハウ
- コミュニケーション: Slack
- 課題管理: JIRA on demand
- 文書管理: Google drive
- ウェブページ: symposion
- SSL: Global Sign が 1年だけの free ssl 証明書?をオープンソース向けに出してるらしい
- 参加チケット管理: connpass
- プログラム管理: guidebook
DDD
Pyramid + socket.io + Bacon.js なんかを使って人狼アプリを作った話
Python で始める競技プログラミング
@cocodrip (ブログ) さんという Python アイドルらしい人の競技プログラミングの話。
制限時間がある問題では、データのサイズごとに適切なアルゴリズムが違うみたいな
まじめなテクニックから、
競技プログラミングは青春ですよね!とはにかんでいってみる可愛い部分もあって
有能だなあと思った。
バイラルメディア 三上聡 @saicologic
乱立するバイラルメディアにある 35 のメディアからいくつかの記事を
scrapy, pandas, matplotlib で分析した。
記事シェア数はスケールフリーな分布だったり、
アナと雪の女王が多かったり、もう一段分析すると面白そうなことがわかりそう
PyConJP NOC (Network Operation Control) @taka-stack
PyCon のネットワークまわりの担当チームの話。
すごく安定して使えていて感動してたんだけども、
準備に半年かけて、実際の構築は 3-4時間ですませたらしい。すごい。
DualStack-Lite (CodeZine) という技術を使ったらしいけど時間切れ。
SphinxCon JP 2014 @usatan
ドキュメンテーションツール sphinx のカンファレンス SphinxCon の宣伝。
日本コミュニティが結構活発らしい