머신러닝과 기상 데이터를 이용해 홈런 갯수 예측해보기 (4) 머신러닝

    목차
반응형

우선 홈런 데이터를 확인해보자.

 

import pandas as pd
import os
import matplotlib.pyplot as plt

base_dir = 'C:/Users/Username/Desktop/'
excel_file = "homeruns_weather.xlsx"
excel_dir = os.path.join(base_dir, excel_file)
df = pd.read_excel(excel_dir, encoding="EUC_KR")

y = df.loc[:,"HR"]
x = df.loc[:, ["TE", "RH", "PS"]]

count_data = df.groupby('HR')['HR'].count()
print("홈런 비율 : %.2f" % ((1-count_data[0]/sum(count_data))*100)+'%')
print(count_data)
plt.plot(count_data)
plt.show()
홈런 비율 : 78.93%
HR
0     1593
1     2144
2     1736
3     1058
4      564
5      269
6      110
7       49
8       26
9        4
10       4
11       2

홈런 갯수별 나온 경기들

의외로 홈런이 나온 경기가 전체 약 80%를 차지한다.

 

이 상태 그대로 SVC 메소드를 이용해 분류해보자.

from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.svm import SVC

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = .2)

clf = SVC()
clf.fit(x_train, y_train)

y_pred = clf.predict(x_test)
print("정확도 = " , accuracy_score(y_test, y_pred))
최종 정답률 =  0.2943121693121693

엄청 실망스러운 결과가 나왔다!!

 

그럼 RandomForestClassifier 메소드를 이용해보자.

from sklearn.model import RandomForestClassifier

model = RandomForestClassifier()
model.fit(x_train, y_train)

y_pred = model.predict(x_test)
print("정확도 = " , accuracy_score(y_test, y_pred))
최종 정답률 =  0.2447089947089947

이것 또한 형편없다!!

 

 

그러면 데이터를 약간 다듬어서 재시도 해보자.

newlist = []
for v in list(y):
    if v == 0 :
        newlist.append(0)
    elif v <= 2 :
        newlist.append(1)
    else :
        newlist.append(2)

y = newlist

홈런이 없는 날, 홈런 1~2개 나온 날, 홈런 3개 이상인 날 세 개로 분류해보았다.

SVC 정확도 =  0.5059523809523809
RFC 정확도 =  0.45965608465608465

좀 더 좋아졌다.

 

그럼 아예 홈런 나온 날과 아닌 날로 분류해보면 어떨까?

newlist = []
for v in list(y):
    if v == 0 :
        newlist.append(0)
    else :
        newlist.append(1)

y = newlist
SVC 정확도 =  0.7962962962962963
RFC 정확도 =  0.7513227513227513

약 80% 좀 못 미치는 정확도가 나왔다.

 

 

이 정도면 잘 나온거 아닌가? 할 수도 있겠지만...

전체 홈런 비율이 80%인 것을 감안하면 '야 오늘 홈런 나오냐?'라는 질문에

아무것도 고려하지 않고 대충 '어'라고 해도 80%는 맞춘다는 소리다.

결국 홈런은 온도, 습도, 기압과 크게 관련이 없는 것이 아닌가라는 의문이 든다.

오히려 바람이나 파크팩터(또는 홈-외야 평균 거리, 외야 펜스 높이) 등을 이용한다면 더 정확할 것 같다.

 

 

결론 : 오늘 홈런 나올 것 같냐는 내기를 했을 때 나온다고 하면 80%는 맞출 것이다.

하지만 몇 개 나올 것 같냐는 질문을 한다면 기껏해야 30%밖에 맞추지 못할 것이다.

728x90
반응형