1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Streamlit×MLB】NL西地区スタメン成績を可視化・予測するアプリを作ってみた

Last updated at Posted at 2025-04-22

🎯 はじめに

2025年、ドジャース打線が異次元すぎる。

そんな彼らと同地区のライバルたちはどれだけ差があるのか?
OPS・WAR などの指標を使って、NL西地区5チームをデータで比較・可視化・予測まで行いました。

💥 補強選手の加入によってチームはどれだけ強化されたのか?
🧠 チーム別に成績の“平均”を出すと?
🤖 Streamlitでどう可視化したの?
🔮 成績予測と開幕現実の比較など

本記事では、これらの観点を総合的に解説します⚾

📌 使用ライブラリ

  • Streamlit:データ可視化アプリのUI構築
  • pandas:CSV読み込み・データ整形
  • matplotlib:棒グラフの描画
  • seaborn:ヒートマップの描画

🧪 使用データ&手法

  • 分析対象:NL西地区の5チーム(Dodgers / Padres / Giants / DBacks / Rockies)
  • 指標:OPS / WAR / AVG / HR
  • 選手:2025年スタメン想定(Fangraphsなどを参考に選出)
  • 補強選手:New=True でフラグ付け
  • データソース:Fangraphs + Baseball Savant
  • チームごとの傾向を視覚的に把握できるよう、平均線も描画しています

🖥 Streamlitで作ったアプリUI

選手別に指標を比較したり、補強選手だけを抽出することも可能です。
平均線・チーム別色分け・ヒートマップなども対応済み。

📊 棒グラフ画面

image.png

🔥 ヒートマップ画面

heatmap
🔗 アプリはこちらから試せます!
https://dodgers-war-analysis-n2ayxkwwwkftewh7crwyv4.streamlit.app/

🧠 中身のコード紹介(棒グラフ)

fig, ax = plt.subplots(figsize=(10, 6))
bars = ax.bar(df_selected["Label"], df_selected[metric], color=colors)

# 平均線をチームごとに表示
for team in teams:
    team_df = df_selected[df_selected["Team"] == team]
    avg_value = team_df[metric].mean()
    ax.axhline(
        y=avg_value,
        linestyle='--',
        linewidth=1.2,
        color=team_colors[team],
        alpha=0.6,
        label=f"{team} Mean"
    )

🤖 成績予測と開幕現実の比較

簡易的なHR予測モデルを使って、補強選手や注目打者が「どれくらい活躍するのか?」を事前にスコア化してみました。

  • 使用モデル:LightGBM
  • 目的:2025年HR数を事前に回帰予測(前年度の打撃成績や傾向から)

🔮 予測 vs 現実:印象的だったケース(2025年4月22日時点)

以下は、開幕前の主な選手のHR予測と2025年4月22日現在の実際のHR数を比較した表です。
※予測はLightGBMによる回帰モデルを用いて算出

選手 予測HR 実際(4/22時点) コメント
大谷翔平(LAD) 44.2 6本 やや控えめな滑り出しだが、波に乗ると爆発の可能性あり。
フリーマン(LAD) 28.5 4本 予測通りの安定感。
ベッツ(LAD) 31.0 4本 小柄ながらHRも多く、勝負強さが光る。
コンフォート(LAD) 16.0 2本 想定以上のスタート、復活の気配。
エドマン(LAD) 8.7 7本 予測を大きく上回る活躍。
タティスJr.(SD) 35.0 8本 攻撃の中核。すでに存在感が際立つ。
マチャド(SD) 27.0 2本 ややスロースタートだが、巻き返しに期待。
テオスカー(LAD) 25.0 5本 パワー全開。打線の中軸で活躍中。

予測と実際の成績を照合することで、モデルの想定と現実のギャップが可視化され、予測精度の課題を定量的に把握できました。


🔬 モデルと特徴量

今回のHR予測は、LightGBM という機械学習モデルを用いて、以下のような特徴量をもとに回帰予測を行いました:

  • OPS、AVG(打率)、ISO(長打力)
  • 打球速度(Exit Velocity)
  • 打席数(PA)、フライ率(FB%)
  • 過去3年のHR数 など

🧠 予測精度と今後の課題

トミー・エドマン選手のHR予測は「8.7本」でしたが、
2024年には20本近くのHRを記録し、2025年もすでに7本と絶好調。

モデルは「過去の平均傾向」に強く引っ張られ、
現在のフォームやスタイルの変化までは捉えきれなかったことがわかります。

大谷に関しても去年は打者に専念したことによって、2024年にはHR54本を記録しており、今季も50本近く打つポテンシャルがあると推測されます。しかし、予測では44.2本と低く見積もられています。

こうしたズレはモデル改善の出発点でもあり、
どの選手で外れやすいか」を分析するヒントになります。

今後は、より直近の傾向や球場要因、打順、フォーム改造や起用法の変化も視野に入れた予測モデルを目指します。


📈 今後の展望

  • WARやOPSの予測精度検証
  • 補強選手の“成功・失敗スコア”の数値化
  • 「予測 vs 実績」の可視化・分析
  • 月別成績・トレンド要素の導入

📝 補足:補強フラグの意味

  • New=True フラグは 2024年以降での新加入選手に付けています。
  • 厳密な加入日ではなく、今季2025年にチームへ与える影響を可視化するためのラベルです。

🚀 実行方法(ローカル)

以下の手順で、ローカル環境でも簡単にStreamlitアプリを起動できます:

pip install -r requirements.txt
streamlit run streamlit.py

GitHub: https://github.com/flopsy212/dodgers-war-analysis

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?