Submit Search
野球Hack!~Pythonを用いたデータ分析と可視化 #kwskrb #28 2015/9/30
•
12 likes
•
4,033 views
Shinichi Nakagawa
Follow
Kawasaki.rb #28 (2015/9/30)発表資料. Pythonを用いた野球プログラミングについて
Read less
Read more
1 of 42
Download now
Download to read offline
More Related Content
野球Hack!~Pythonを用いたデータ分析と可視化 #kwskrb #28 2015/9/30
1.
The Art Of Programming A
Baseball Game!!! 野球Hack!~Pythonを用いたデータ分析と可視化 Shinichi Nakagawa@shinyorke Kawasaki.rb #28 2015/9/30
2.
お前だれよ • Shinichi Nakagawa(36) •
Recruit Sumai Company, Ltd.(入社1年) • Web Application Engineer(メインはServer Side) • Agile/Python/Infrastructure as a codeが大好き • 北海道日本ハムファイターズ &オークランド・アスレチックスの大ファン • 中島卓也(日)、ソニー・グレイ(OAK)、ココ・クリスプ(OAK)推し • “野生の野球アナリスト”活動とかいう伝導活動
3.
“野生の野球アナリスト” 活動
4.
• PyCon JP
2014 Talk Session(去年のやつ) • MLBオープンデータ分析&可視化サービスをPythonで構築 • はてブ200超え、PV 14,000以上(slideshare)
5.
• PyCon JP
2014 Lightning Talk(去年のやつ) • Agileプロセス活用、アダム・ダン率の紹介 • アダム・ダン氏、Python界隈で一番有名なMLB選手に
6.
• XP祭り2015「俺も!!」登壇資料 • ITな仕事をしている人たちに伝えるセイバーメトリクス •
データ収集&レポートの仕組みをPython + Dockerで構築
7.
Other… • ブログで野球Hackの成果および考察を披露(不定期) • MLBオープンデータの紹介と活用例紹介 •
野球データの分析&解析用のライブラリを Githubで公開(ほぼPython製) • データドリブン野球解説 ※後ほど解説
8.
最終目標(40歳までに) • エンジニア×ビジネスマンとして、 日本プロ野球orMLBの仕事をやる! ※日本12球団+MLB30球団のオファー待ちw • 野球データとエンジニアの知見を活かし、 2020年東京五輪でメダル獲得のサポート ※選手じゃないですw、エンジニアとして、ね。
9.
本題
10.
Today’s Starting Member •
Pythonと野球 • MLBオープンデータ活用とPython • まとめ - これからの野球Hack
11.
Pythonと野球
12.
なぜ野球×Pythonなのか? • プロトタイピングが楽 • ライブラリ •
仮想環境
13.
プロトタイピングが楽 • 野球Hackは整形されたデータ(スコアブック)と、 整形されていないデータ(スコアブック以外のデー タ)の解釈と前処理がメイン →使いこなすまで、プロトタイピングが続く • 前処理・分析・可視化がオールインワンで出来る Pythonが楽でいい →Jupyter,
pandas, matplotlib, この3つでほぼイケる Python is 全部載せ
14.
ライブラリ • インフラ構築・管理 Ansible, docker-compose,
boto3, etc… • データ分析・可視化 Jupyter, pandas, matplotlib, etc… • Webアプリ構築 Django, Flask, bottle etc… Pythonはユーティリティープレイヤー( ー`дー´)キリッ
15.
仮想環境 • pyenvで実行環境切り替え OSのPythonに縛られない開発. Python3.4.3→3.5.0移行がすんなり行けた • virtualenvでパッケージ管理 アプリのプロジェクトと分析のプロジェクトで パッケージ管理を別々に扱う •
docker-compose(旧名fig)でServer丸ごとスクラップ&ビルド 実行環境をDockerで管理、大胆に「作る」→「壊す」を行う環境を実現 「作る」→「壊す」→「作る」→「壊す」(以下略)
16.
なんでや!Pythonじゃなくてもできるやろ!! ※ボールの判定に不服なバルフォアさん、ではありません 元画像:http://www.sbs.com.au/
17.
はい、Pythonじゃなくできます • インフラ管理・構成 部分的にVagrantを使用、ちなみにChefはやめた. • データ分析・可視化 得意な人はR・Juliaでいいと思う、野球HackをRでやってる方もいます. (他の言語は、、、どうなんだろう?) •
Webアプリ構築 APIやバッチならGolang, サイトならRuby On Rails他選択肢がたくさん有り • 仮想化 Rubyのrenv/rbenv-gemsetも素敵ですよね☆ 目的(と好み)に合わせて手段を柔軟に変えましょう
18.
好きな言語でHackしようぜ! ※キャプテン・ジーター、本当にお疲れ様でした 元画像:http://www.playbuzz.com/
19.
俺々開発ルール(やきう版) • スクラップアンドビルドしやすい環境で作る • 野球は仮説検証・技術リスクが高いネタが多い(特に前者) •
Sandbox環境で仮説・技術リスクを検証,いらないものは捨てる • シンプルに作る(疎結合・環境非依存) • 豊富なライブラリおよび仮想環境活用で実装と環境をシンプルに • 特にホストOSには依存しない作りにする(Macだけ、Linuxだけルールはナシ) • 繰り返し作業は自動化 • データベース作成、前処理まではある程度決まった作業なので自動化 Pythonが一番やりやすいってことです
20.
MLBオープンデータとPython
21.
元ネタ(過去ブログより) http://shinyorke.hatenablog.com/entry/ 2015/04/06/190243
22.
やりたかったこと • やきうゲーム「Fantasy Baseball」に勝つため、 選手の詳細な情報(打席、投球など)が欲しい •
「Retrosheet」というデータにそれらが詰めら れてるらしい • よし!Retrosheetデータベースを作ろうじゃな いか!
23.
Retrosheet is 何? •
メジャーリーグのスコアデータ集 • 1887~2014(昨シーズン)までのデータをCSVで配布 ※ 1989以前は欠損有り • スコアブックで得られる情報(得点、失点、スタメン、打席 結果etc…)と選手情報(名前、ポジションなど)がひと目 でわかる • http://retrosheet.org/
24.
やったこと • Vagrant +
AnsibleでMySQL Server構築 • SQLAlchemy + py-retrosheetでmigration • Jupyter(IPython notebook)とpandasで分析 • matplotlibで可視化
25.
構成 Simple is Best?
26.
構成 Simple is Best!!! (自動化頑張りました)
27.
サーバー構築とmigration $ vagrant up $
ansible-playbook -i hosts retrosheet_server.yml この2行でサーバーを作れるようにしました! ※VagrantとAnsibleを導入している前提です
28.
PY-RETROSHEET - やきうScript •
Retrosheet専用Download&migration script git@github.com:wellsoliver/py-retrosheet.git • データ取得からDB(MySQLなど)へのmigrationを一気通貫に行う • 細々と開発が続いてる(っぽい)
29.
Jupyter+pandas+matplotlib • 平たく言えば、「ブラウザ上で使えるPythonその他のSandbox環境」 • データやLibraryが不確実(
使いこなせていない)時の試し打ちとして最高すぎる環境 • pip install コマンドでちょいちょいとインストールしたらアッサリ環境が出来ます
30.
分析と可視化 • Hideki Matsui(#55)の全盛期と黄昏時 •
Jon Lester(Cubs)は何月に多く勝つのか? Hideki Matsui Jon Lester
31.
松井(2004) VS 松井(2011) •
外野に飛んだヒットを分類&可視化 • 2004・2011共にセンター~ライトへの打球が多い(センター返しor引っ張り) • 2011年、本塁打と三塁打が恐ろしく少ないあっ(察し 2004(ヤンキース) 2011(アスレチックス)
32.
ジョン・レスター(月別勝利) • 何故か5月に無双してる&いい年は9月に強い • オールスター(7月)前後は微妙に勝てない
33.
コードは後日公開!!!
34.
まとめ シモンズの守備ってまとめに相応しいよね 元画像: http://a.espncdn.com/photo/2013/1028/mlb_nl-gloves_06.jpg
35.
Python + Baseball •
「野球Hackで迷ったらPython!」 • とはいえ、目的や好みに合わせて言語やFWを選ぶの 大切! →効率化&自分の武器が増えるという意味で • 好きなデータを好きな言語でHackすると楽しいよ (^O^) ※2年連続2回目
36.
好きな言語でHackしようぜ! ※キャプテン・ジーター使い回し 元画像:http://www.playbuzz.com/
37.
これからの野球Hack(1年後) • 「データドリブン野球解説」を通じて新しい野球とスポーツの可能性を説いて生きたい!! • “これが、新しい野球.
既存の野球を軽く飛び越え,私たちは新しいスポーツの楽しみを知る” • 質が高い解説をするための情報収集&分析と基盤の整備
38.
これからの野球Hack(2年後) • 「データで知る野球・スポーツ」が「アタリマエ」になる世界へ!!! • 2年後そして5年後の「スポーツ・野球のアタリマエ」を作る自分でありたい!!!
39.
Possibilities of Python
40.
“”” わたしの関心事は、野球だけ。 いったいなぜだろう? それは、ほかの分野の数字と違っ て、野球のデータには言葉と同 じ力があるからだ。 “”” - ビル・ジェームズ(セイバーメトリクスの父) 書籍「マネー・ボール」第四章より
41.
Possibilities of SABRmetrics
42.
ゲームセット!!! ご清聴ありがとうございました. Shinichi Nakagawa(Twitter/Facebook/hatena:@shinyorke)
Download