머신러닝 - 과거 야구계의 전설 최동원 선수 현재 연봉 예측

최두희·2024년 8월 15일

1. 데이터 수집

1. KBO: https://www.koreabaseball.com/Record/Player/PitcherBasic/BasicOld.aspx

2. Statiz: https://statiz.sporki.com/add/?m=salary&year=1988&ct_code=


2. 데이터 전처리

필요한 모듈 import

import pandas as pd
import numpy as np
import requests
import time
import logging
from bs4 import BeautifulSoup
from tqdm.notebook import tqdm
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.support.ui import Select
from selenium.webdriver.support import expected_conditions as EC

로그 쌓기

logging.basicConfig(filename='scraping.log', level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
filemode='w')

년도별 투수 스탯표 가져오기

base_url = "https://www.koreabaseball.com/Record/Player/PitcherBasic/BasicOld.aspx?sort=ERA_RT"
driver = webdriver.Chrome()
driver.get(base_url)

1980년대 선수는 1983년 ~ 1989년 까지

2000년대 선수는 2015년 ~ 2021년 까지

years_1980s = range(1983, 1989)
all_records_1980 = pd.DataFrame()
years_2010s = range(2015, 2021)
all_records_2010 = pd.DataFrame()

각 엘리먼트에서 데이터 추출

1980년대 선수 데이터 수집 결과

2000년대 선수 데이터 수집 결과

연봉데이터 가져오기

1980년대 연봉 데이터 수집

2000년대 연봉 데이터 수집

컬럼명 변경 및 연대별 선수 연봉

두 데이터 프레임 병합(선수정보 + 연봉정보)

데이터 전처리 (NaN값 제거)

1980년대, 2000년대 데이터 병합

연도, 순위 컬럼 삭제

CSV로 결과 저장

3. 연봉 예측

전체 작업 흐름

  • 1980년대 및 2010년대 투수 데이터 결합.
  • 모델 학습을 위한 데이터 전처리.
  • 랜덤 포레스트 모델을 사용하여 예측 모델 훈련.
  • 최동원 선수의 데이터를 사용하여 현대 연봉 예측.

필요한 모듈 import

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.model_selection import train_test_split, cross_val_score, cross_val_predict
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error, r2_score
from matplotlib import font_manager, rc

그래프 출력시 한글 깨짐 방지

1983년부터 2020년까지의 물가상승률 데이터를 사용하여 각 해의 연봉을 2020년 기준으로 조정

물가에 따른 연봉 조정 함수

데이터 로드

최동원 선수의 과거 연봉 데이터 수동 입력

연봉 조정 함수 적용

최동원 선수 연봉 확인

필요한 컬럼만 선택

IP컬럼(Inning Pitched) 와 같은 형태의 데이터 숫자로 변환 함수

결측치 처리

상관관계 그래프로 분석해 보기

연봉 조정과 상관관계가 강한 순으로 정렬

-> 연봉과 가장 강한 상관관계: SO (삼진)와 HR (홈런)

현대 선수들과의 비교를 위한 투수 데이터 필터링

모델 훈련 및 교차 검증

모델 평가

최동원 선수 연봉 예측

profile
안녕하세요!

0개의 댓글