LoginSignup
1
1

More than 5 years have passed since last update.

scikit-learnで2016年夏の2回戦を予測

Posted at

はじめに

scikit-learn を触ってみる夏休みの自由研究第二弾です。第一弾はこちら 。相変わらず初心者的な内容ですがご容赦ください。

今回は地方大会の成績を元に1回戦の対戦結果を学習して2回戦の得点力を予測することを考えてみました。念願の機械学習です(やってみたかっただけ感満載でスミマセン)。

学習データ

前回使用した 地方大会の打撃成績 を元に、代表校ごとの初戦の組み合わせから 相手高校の投手成績 を学習データに組み合わせて、初戦の得点数を学習させてみることにしました。

作成した学習データが こちら 。49校なので盛岡大付が初戦の相手校として2回出てくることになりますね。

学習と予測

上記の通り、地方大会のデータを元に打撃成績と相手の投手成績を全て説明変数として学習させます。目的変数は甲子園初戦の得点数です。

学習アルゴリズムは 線形回帰 にしました。例のごとくあえて他を選ぶ知識がないので…

そして学習結果を検証するための予測データとして2回戦の組み合わせを調べて学習データと同様に こちら にまとめました 。

#coding:utf-8
import pandas as pd
import numpy as np
from sklearn import linear_model

# 初戦の結果を学習
df = pd.read_csv('round1-result-2016.csv')
X = df.drop(['県','県No','学校名','対戦校','得点'], axis=1)
Y = df['得点'].as_matrix()

clf = linear_model.LinearRegression()
clf.fit(X, Y)

# 2回戦の予測
df_round2 = pd.read_csv('round2-game-2016.csv')
X_round2 = df_round2.drop(['県','県No','学校名','対戦校'], axis=1)
round2_pred=clf.predict(X_round2)

print(round2_pred)

結果

学校名 対戦校 得点
岩手 盛岡大付 創志学園 2.37607605
奈良 智弁学園 鳴門 3.62097786
徳島 鳴門 智弁学園 5.76513128
山梨 山梨学院 いなべ総合 3.88857396
三重 いなべ総合 山梨学院 5.36922697
茨城 常総学院 中京 5.14173416
岐阜 中京 常総学院 7.22823584
愛知 東邦 八戸学院光星 8.83172441
青森 八戸学院光星 東邦 1.28556647
神奈川 横浜 履正社 7.68159192
大阪 履正社 横浜 4.58766162
和歌山 市和歌山 日南学園 2.27939976
宮崎 日南学園 市和歌山 4.78286132
鹿児島 樟南 花咲徳栄 -1.30671611
埼玉 花咲徳栄 樟南 1.90896096
広島 広島新庄 富山第一 1.28968031
富山 富山第一 広島新庄 2.03399291

これを書いた8/13時点で盛岡大府は予測と違いますが智弁と鳴門の結果がわりと当たってて若干驚きました。なんか1つマイナスの結果がでてますが…相手校の地方大会の失点と防御率が0だからだと思います。

あくまでデータサイエンス的な数値遊びですのであしからず。実際の対戦や選手に対して何かを訴えたり批判する意図は一切ありませんので誤解なきようお願いします。

1
1
1

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
1