선발 > 마무리 인식
선발선수는 이닝이 높다. -> 이닝이 뭔데?
-> 한 투수의 모든 이닝을 합쳐서 가장 많이 아웃카운트를 잡은 투수가 이닝 순위 1등
투수가 뭔지 헷갈려서 일단 사전조사부터 했다.
네이버 동영상백과 :https://terms.naver.com/entry.naver?docId=2446958&cid=51673&categoryId=51690
야구에서 공격 팀의 타자에게 공을 던지는 선수
아웃카운트 : 공격측 플레이어 몇 사람을 아웃시켰는가를 셈하는 수치. 공격측 플레이어 세사람을 아웃시키면 두 팀은 공수의 임무를 교대.
즉 선발투수가 마무리투수보다 공격플레이어 아웃을 더 많이 시킨다는 인식?
데이터 수집 -> info() 확인 -> 필요로 하는 컬럼만 남기고 DataFrame 생성 -> int형 데이터 float형으로 변환 -> 1980년도와 2010년도 컬럼 맞춰주기
선형회귀를 위해 라벨 인코딩보다는 one-hot-encoing을 사용, 트리계열에서는 상관없다
- KIA, 롯데, 삼성의 회귀 계수가 -3.63e+04, -3.448e+04, -2.835e+04 로 유의미해 보이지 않는다.
- --> 팀 컬럼 제거하자!!
컬럼별 boxplot
연봉 boxplot, 히스토그램
- 이상치값이 많이 보인다
- --> 이상치의 영향을 최소로 받는 RobustScaler 적용을 해보자
RMSE of Train Data : 25456.699763097145
RMSE of Test Data : 28756.447532185804
- 잘 맞지 않는다.
- 문제는 "최동원 선수가 현역 선수라면 연봉이 얼마일까"이므로 최동원 선수의 능력치는 그대로여야 할 것이다.
- --> 최동원선수가 그 당시에 얼마나 유능한 선수였더라도 현역과 비교해서 능력이 떨어지면 연봉도 하락할 것이기 때문
- 만약 명성에 따른 연봉이었다면 그 당시 선수들&현역선수들의 능력치 평준화 비교가 들어갔었겠지만
- 능력치를 그대로 설정했다면 달라질 것은 연봉 뿐이다.
- 따라서 그대로 선형회귀를 돌려도 될 것 같다.
- 물가상승을 고려해 연봉 계산을 해보니 1985년 -> 2018년 : 8100 -> 27159.3 (만 원)
- 물가상승 배수 : 3.353
- 참고: CPI 소비자 물가지수
- 이제 이 1980 데이터셋은 test용으로 남겨두고, 2010 데이터셋으로 다시 되돌아가 보자
물가상승률만 반영했을때의 최동원 선수의 연봉은 27159.3(만 원) 이었으나,
선형회귀 결과 최동원 선수의 연봉은 568114.8(만 원)으로 나왔다.
- 최동원 선수 설정 연봉 : 18873(만 원)
- 선형회귀 predict 결과 연봉 : 149245(만 원)
최동원 선수의 현역일 경우 연봉은 149245(만 원) 이다.
첫 머신러닝 과제라 그런지 이틀의 시간이 소요되었다.
배운 내용을 찾고 정리하고 주관적 판단이 들어가고 배우지 않았던 부분도 구글 검색을 통해 스스로 학습하는 시간을 가졌다.
최대한 컬럼에 대한 이해도를 높이고 회귀분석의 절차를 수학적으로 따라가려고 노력했다. 결괏값이 이상하다고 느껴지거나 납득이 되지 않으면 다시 윗 단계로 돌아가 작업하는 과정을 거쳤다. 위 코드는 내가 짠 코드의 전체가 아닌 일부분이며 전체를 작성하고 나서 나름대로 머신러닝의 흐름을 잡을 수 있는 기회가 되었다고 생각한다. 앞으로 있을 머신러닝, 딥러닝 프로젝트를 위해 꾸준한 공부를 다짐한다. 모두 수고하셨습니다~