野球hack!(続き)~pythonを用いた野球サービス構築 #bpstudy

30

Upload: shinichi-nakagawa

Post on 28-Jan-2018

928 views

Category:

Software


0 download

TRANSCRIPT

Page 1: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy
Page 2: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

Who am I ?

• Shinichi Nakagawa(@shinyorke)

• Pythonで野球の人(野生の野球アナリスト)

• Python / Agile / Infra as a code(Dockerとか)

• 贔屓チーム

• 北海道日本ハムファイターズ

• オークランド・アスレチックス

• BPStudy登壇:4回目(#79, #89, #91, #99)

Page 3: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

野球Hack~Pythonを用いたデータ分析と可視化http://www.slideshare.net/shinyorke/hackpython-pyconjp

Page 4: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

反響

• 60席+立ち見&床席40人ちょっと(推定)→発表時の聴衆の皆さま(感謝!)

• 約20,000views(SlideShare)

• 220→はてなブックマークの数(減ってた)

Page 5: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

とても興奮している. ありがとう!※なお、カノーさんはシアトルに来てから(ry

Page 6: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

Today’s Starting Member

• デモアプリ(のコード)を公開しました!

• 次回予告

Page 7: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

おさらい

Page 8: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

分析と可視化

• レスターは何月に一番勝っているのか?

• ボットのマルチ四球(=1試合2四球)の回数

Jon Lester Joey Votto

Page 9: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

Jon Lester(ジョン・レスター)

• メジャー屈指の先発左腕、優勝請負人 ※世界一経験二回

• プレーオフ(10/9)に先発、なお負け投手

• レッドソックス(2006-2014)→アスレチックス(2014)→カブス(2015)

Page 10: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

レスターさんの月別勝利数

• 調子いい時は4,5月で稼いでいる、8,9月も良さげだがそんなに極端ではない

• 残りの月はなんか微妙だけど傾向がアレ ちなみに7月はオールスターの為登板が少ない(レスターにかぎらず)

Page 11: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

Joey Votto(ジョーイ・ボット)

• レッズ一筋(2007-2015)、強打の一塁手

• 選球眼が良すぎて散歩(四球)が多い、通算アダム・ダン率は38%

• 内野フライが異常に少ない。とある統計によると、2009-2012の4年間で3本(ファ!?)

Page 12: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

塁間さんぽ(イッチVSボット)

• 月別の四球数、凡例の数字はシーズン通算

• 圧倒的にボットさんが散歩好き、特に8,9月やばい

• 神イチローはとにかく打って走るスタイル、春先はまあまあ歩いてる

イチロー ボット

Page 13: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

マルチさんぽ(イッチVSボット)

• 1試合で2個以上四球を選んだ試合を月別にカウント

• ボットさんの回数がやばい

• 神イチローはある意味予想通り、流石天才バッター

イチロー ボット

Page 14: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

コード、公開しました!

Page 15: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

https://github.com/Shinichi-Nakagawa/hatteberg

Page 16: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

MLBの野球データを用いた分析と可視化のサンプル(Python)を公開しました

http://shinyorke.hatenablog.com/entry/2015/11/15/231336

Page 17: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

こだわりポイント

• 自動化~煩わしい前処理の型化

• 高速化~15年分のMLBデータを10分でDB化

• すぐ使えるサンプルの提供

Page 18: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

自動化

• ダルい作業である、前処理を自動化

• 野球データのダウンロード,前処理,作成を一気通貫に出来る仕組みに作り直し

• MySQLをDockerで一発作成&マイグレツール「py-retrosheet」を作り直し

Page 19: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

https://github.com/Shinichi-Nakagawa/py-retrosheet

Page 20: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

高速化(特にマイグレツール)

• 従来のマイグレツール(py-retrosheet)

→1シーズン分のデータ作成に20分 15年分は(ry

• 作りなおしたマイグレツール→1シーズン分で1分かからず 15年分は10分でデータ取得~前処理~DB作成!

Page 21: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

15年分のMLB試合データを10分でMySQLに格納するPythonスクリプト(野球Hack!)

http://qiita.com/shinyorke/items/d44d00d0f02b09b8b0ed

Page 22: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

サンプルコード

• Jupyter notebookベースで使えるサンプルを用意

• レスターの勝ち星、ボットの散歩に加え、背番号55の方のデータ分析サンプルを追加

• Jupyterで遊びたい人はどうぞ!

Page 23: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

結び

• 誰でも野球Hack!出来る仕組みにした(つもり)

→公開をモチベーションに、自動化と高速化をやり切った 現実使える仕組み&使い心地じゃないと意味ない(おもてなしの心)

• もっといい作り・プロダクトにしたい! →野球で何かやりたい人は活用して欲しい&フィードバック待ってます!

• 現実的な使い道→15年分のMLB打席データ(約280万レコード)が割と楽に手に入る データ見てニヤニヤしたり、機械学習の勉強ネタにどうぞ!

Page 24: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

Next Challenge…

Page 25: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy
Page 26: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

今年やったネタ

Page 27: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

これカッコ良くね?

今年やったネタ

Page 28: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

http://m.mlb.com/apps/atbat?c_id=mlb

Page 29: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

Next Challenge

• MLB一球速報(MLB At Bat)データを用いた分析と可視化Pitch f/x(高性能スピードガン)のデータを用いた分析と可視化、やってます! ※ライセンスは問題無いです(念のため)

• 選手のタイプ(配球やコース、打者の好きなボールetc…)を分析したい→そろそろ機械学習まじめにやる

• PyCon JP 2016で発表出来る…はず(Proposal通れば)

Page 30: 野球Hack!(続き)~Pythonを用いた野球サービス構築 #bpstudy

ゲームセット!!!ご清聴ありがとうございました.

Shinichi Nakagawa(Twitter/Facebook/hatena:@shinyorke)