kbo 다음 시즌 타자 성적(OPS) 예측 모델
in Project on University
1. Competition, Toy project - 야구 타자 OPS 예측
Member : 김경록
Status : Complete
사용언어 : python
핵심 라이브러리 : Pandas, matplotlib, seaborn, plotly, BeautifulSoup, sklearn
2. Why
프로야구에는 정규 시즌도 중요하지만,
스토브 리그라는 선수들을 영입/방출 하면서
팀을 재정비 하는 프리 시즌이 존재한다.
크게 선수들을 투수/타자로 나눌수 있고 이번 프로젝트에서는
타자의 지난 시즌 성적들로 현 시즌 타격 능력(OPS)를 예측 해보려고 한다.
현재는 정규 시즌을 뛴 선수들만 가지고 모델을 만들지만,
향후에는 미출전 선수, 고등/대학 리그 선수들로 확대하여
KBO의 팀들이 타자의 다음시즌 타격 능력을
미리 확인할 수 있는 모델로 만들어보고자 한다.
3. Data
스탯티즈 크롤링
–> 현역 선수 연도별 타격 성적 + 개인 정보(나이, 연봉 등)
4. 분석 방법
(a). Data Preprocessing
- EDA : 변수간 heatmap & 반응변수와의 barplot, boxplot & barplot, histogram & dot graph
- 목적 변수 작업 : 다음 시즌 OPS
- 파생 변수 생성 : 행운의 안타, 타자 속도 계수, 평균대비 기여율, 공 반발계수, 누적 연차 등
- Data Reduction : 작은 타석수로 과도 or 과소로 나온 값 절단
- 변수 그룹화 : 타석 위치 & 포지션 통합
(b). Model & Algorithms
- RandomForestRegressor
--> GridSearch 사용 후 MAE 계산
- xgboost Regressor, Linear Regression
--> parameter 미설정 후, 메인 모델링 비교용으로 활용
- 이전 2개년 결과 --> 누적 데이터 감소에 따른 영향 확인 및, 연도별 MAE 일정 여부 확인
(c). Report & Review
- 최종 등수 : 모델링 18/93위 기록 / 시각화 1등 기록
- MAE 0.09로 타자의 OPS 성적을 1할 미만으로 예측하는 모델 구현
(cf 예측변수 평균 범위 0.55 ~ 1.1)
- 긍정적 사항 : 데이터 크롤링, EDA, 모델링까지 전체 process 단독 구현
- 피드백 : 직전 시즌 기록만이 아닌 더 이전 시즌의 기록, 누적 성적들도 활용 가능 했음
- Futher Research : 이전 기록이 없는 신규 타자
--> 고등,대학 리그의 데이터 보유시, 추가 모델 구현 가능
*보러가기: 야구 타자 OPS 예측 모델 코드
5. 요약
- 변수 중요도 상위 6개 : 총 루타 수(TB), wOBA, 타점(RBI), 홈런(HR), isop, 현재 시즌 OPS
데이콘 6회 KBO OPS 예측 시각화 부문 1등 기록 = 푸른무민
- 검색용 태그 : isnull(), boxplot, barplot, hist, scatter, corr(), heatmap, MinMaxScaler(), itemgetter, .set_bbox, np.where, pd.get_dummies, .drop, grid_search.best_params_, mean_absolute_error, rmse, best_grid.feature_importances_, plt.barh