Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session
Upcoming SlideShare
Loading in...5
×
 

Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session

on

  • 583 views

Pycon JP 2014発表資料です。

Pycon JP 2014発表資料です。

ピタゴラス勝率とBABIPについて、Django他で可視化しました。

Statistics

Views

Total Views
583
Views on SlideShare
500
Embed Views
83

Actions

Likes
5
Downloads
4
Comments
0

2 Embeds 83

https://twitter.com 82
http://tweetedtimes.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session Pythonではじめる野球プログラミング PyCon JP 2014 9/14 Talk Session Presentation Transcript

  • Pythonではじめる野球プログラミング Python×オープンデータでセイバーメトリクスをはじめよう Shinichi Nakagawa(リクルート住まいカンパニー)
  • 自己紹介 • 名前:Shinichi Nakagawa(中川伸一) • 別名:野生の野球アナリスト • Twitter: @shinyorke • 所属:リクルート住まいカンパニー • 仕事:Engineer, Lean Startup/Agile Coach(仮)
  • 本日のスタメン • きっかけ • データはどこにある? • 野球データベースをつくろう • Djangoでアプリをつくろう • セイバーメトリクスを可視化 • まとめ
  • きっかけ 大好きなソーシャル野球ゲームで勝ちたいんや!!! ! →勝つためには優秀な選手・調子いい選手が必要 ! →オススメの選手を紹介するサービスを思いつく ! →まずは選手とチームの成績を可視化しよう!←今ここ
  • ソーシャル野球ゲーム Yahoo Fantasy Baseball http://baseball.fantasysports.yahoo.com/
  • データはどこにある? Web上で公開されている主要な野球データ(MLBのみ) メディア形式使い勝手備考 MLB.com 公開データなし- ライセンス+αの理由で使え ない(察し) Baseball Reference Web Site (html) ☓ スクレイピング前提、ライ センス的に使えない Yahoo Social APIs REST △ アプリから使いやすいが、 (json or XML) 取得可能な情報が少ない Sean Lahman CSV,SQL他◯ CC3.0ライセンス、情報が 充実、コレなら使える!
  • Sean Lahman Database ・1871~2013までのMLB選手・球団のデータ ・CSV/SQL/Microsoft Access Database ・Creative Commons 3.0 License http://www.seanlahman.com/baseball-archive/statistics/
  • 野球データベースをつくろう • Serverを立てる • MySQLをインストール • Schemeをつくる • SchemeからModelを自動生成 • CSVデータを投入 sqlacodegen
  • • Serverをコードで管理 • DB Serverの構築に活用 • Virtual Box上にUbuntu 14.04 LTSのイメージを立て るコードを実装 • ついでにChef soloの起動も • vm.boxを変えればそのまま Production環境も作れる
  • Chef solo • ミドルウェアをコードで管理 • インフラ作業をrecipe化 • MySQLをインストール • Pythonをインストール • Scheme作成のシェル実行 • コードでインフラを書く喜び (^o^)
  • sqlacodegen • DB SchemeからSQLAlchemy のModelコードを自動生成 • pipでインストール可能 • MySQL/PostgreSQL/ SQLite3などに対応 • https://pypi.python.org/ pypi/sqlacodegen • 全テーブル(約20個!)の Modelが瞬殺で完成\(^o^)/
  • 出力結果 まあ楽ちん!
  • • O/R Mapper Python代表 • なんやかんやで使いやすい • Webアプリは勿論、他のプロ ダクトでも普通に使える • http://www.sqlalchemy.org/ • 選手および球団データを MySQLに投入するコードの中 で使用しました
  • Djangoでアプリをつくろう • Python3.4 + Django 1.7でアプリ構築 • MySQLの接続にハマる • Bootstrapで楽ちんデザイン • morris.jsで折れ線グラフを描く • HIGHCHARTSで散布図を描く PyMySQL morris.js HIGHCHARTS
  • Django • Web Applicationフレームワーク • 競合:Ruby On Railsなど • MTV(Model Template View)と呼ば れるアーキテクチャで実装されてい る • https://www.djangoproject.com/ • アプリ本体は全部Djangoで実装 • でも本当はFlaskの方が好み(小声)
  • [Tips]MySQLとの付き合い方 • ConnectorはPyMySQLを 使いましょう • PyMySQL3だと動きません! • Django内で使う時は __init__.py内におまじないを かけましょう(写真) • ここが一番のハマりポイント でした…←丸一日潰しました
  • Start Bootstrap • http://startbootstrap.com/ • Bootstrapのtemplate集 • ランディングページ、Admin (管理)など、種類が抱負 • フリーと有料の両方アリ • 野球アプリのtemplateとして Adminのイメージを使用
  • morris.js • Javascript製グラフ描画ライ ブラリ • http://morrisjs.github.io/ morris.js/ • 非常にシンプルで楽 • レスポンシブデザインに対応 • 折れ線グラフ描画に使用
  • HIGHCHARTS • Javascript製のビジュアライゼー ションライブラリ • レスポンシブデザインに対応 • http://www.highcharts.com/ • 折れ線、棒、散布図etc…ほと んどのグラフがかける • morris.jsで描けない散布図を 描画
  • セイバーメトリクスを可視化 • 選手のプロフィールを見やすく表示 • BABIP : プレーの運・不運を可視化 • ピタゴラス勝率 : 得点と失点からチーム勝率を予測
  • デモその① 「プロフィールを表示」
  • BABIP • 正式名「Batting Average on Balls In Play」 • 本塁打を除くグラウンド内に飛んだ打球が安打になっ た割合を指標化したもの。別名「インプレー打率」 • .300前後が平均値。平均値を外れた場合は何らか の外的要因があると考える(運、守備の巧拙etc…) • 式:(安打-本塁打)÷(打数-三振-本塁打+犠飛)
  • デモその② 「BABIPと打率を比較」
  • ピタゴラス勝率 • “得点と失点が等しい時の勝率は5割である”という 仮説に基づき生み出された指標 • 総得点と総失点から予想勝率を算出 • 式:(総得点の二乗)÷(総得点の二乗+総失点の二乗) • ラグビー、サッカー等、他の球技でも使える
  • デモその③ 「ピタゴラス勝率」
  • 学びとTips • Python + オープンデータでDIYな可視化とデータ 解析ができる! • 改めて知った「野球データの奥深さ」 • 【提案】好きなデータを好きな言語でHackすると 楽しいよ\(^o^)/ • ソースコードは後日Githubで公開しますので、真 似するなりforkしてやってみてください!
  • walk-off home run!!! ご清聴ありがとうございました!さようなら!!! Blog: http://shinyorke.hatenablog.com/