페저주카 의 다양한 글쓰는 세상
2021-06-20 • 2 min read

해외 축구 선수 이적료 데이터로 머신러닝 연습하기

목차

최근 dacon에 머신러닝 알고리즘을 공부할 수 있도록 연습할 수 있는 데이터와 강좌가 업로드 되었다. 그중에 해외 축구 선수 몸값을 예측하는 데이터가 있어서 이걸로 탐색적 분석(EDA)도 해보고 마지막에 머신러닝 연습도 해보려고 한다.

https://dacon.io/edu_tutorial/143821 [필요한 train set과 test set은 위 링크를 통해 모두 다운 받을 수 있으며 강좌가 워낙 잘 되어있다. ]

train 데이터는 8000명 이상의 선수 정보가 담겨있다. 선수의 나이, 출신대륙, 계약만료연도, 포지션, 사용하는발, 역량 등의 columns가 있다. 

column이 많지 않아서 모든 column을 .unique()를 이용해 수하 값들이 있는지 확인해보았고 그중 contract_until 중에 만료 월과 일까지 포함된 데이터가 있음을 발견했다.  입약 만료 연도만 남기기 위해 str.slice를 이용했고 str.slice를 이용할 행운 있는 건 견련 열의 팩트 타입이 문자열이었기 때문이다. 전투 추후에 연도가 아니라 몇년이 남았는지를 계산하고 사용할 것이기 그러니까 실은 타입을 정수(int)로 바꿔주는 작업도 필요했다.

이제 교량 변수를 이용해 시각화를 해보며 수모 패턴이 있는지 알아보았다.

기존 역량과 잠재 역량을 보고 차이를 구한 이다음 이들의 몸값을 시각화하였다. 더군다나 점의 사이즈를 아래가지 선수의 인지도(reputation)에 마침내 크기를 다르게 했다.

이익금 그래프를 그리기 전까지는 잠재 가치가 높을 서류 몸값이 높지 않을까 싶었는데, 인지도까지 더해서 잠재 가치가 높아도 인지도가 낮으면 몸값이 높게 평가되진 않는 것으로 보였다. 또한 잠재가치가 적은 선수들은 먼저 효력 점수가 높고 인지도도 높았다.

몸 값을 높이려면 잠재가치와 인지도를 적절하기 조화해야 하나보다.

당연한 이야기지만 역량이 높을수록 몸값이 높게 평가되는 모습도 확인할 해볼 수가 있었다. 뿐만 아니라 잠재 역능 보다는 실상 역량을 발휘하는 것이 쓸모 인상에 훨씬 효과적인 것 같다.

추가로 매개 대륙 + 사용하는 발걸음 별 평균값 몸값을 막대그래프로 그려보았다. 아시아 선수와 오세아니아 선수들의 몸값이 다른 대륙에 비해 낮은 감이 있지만 선호하는 발에 따라 몸값이 크게 차이나지는 않는 모양이다. 포지션별로 보면 오른 발을 사용하는 사람은 포지션에 따라 몸값이스포츠 상이하고 왼발을 사용하는 선수는 수비수, 골키퍼, 미드필더, 스트라이커 순으로 중수 연봉이 높아지고 있다. 골키퍼는 반대로 선호하는 발에 따라 평준 몸값의 차이가 좀 있었다(왜 그런지는 더한층 생각해봐야 할 듯)

어찌되었든 우리는 대륙, 포지션, 사용하는 발도 변수들을 어떻게 조합하느냐에 따라 몸값이 변한다는 점을 알 핵심 있다. 거의 모든 변수들이 무의미하지 않다는 것이다.

이제 변 변수들을 머신러닝 알고리즘에 적용해야 하는데 적용하기 위한 팩트 스케일링을 진행했다.

첫번째로 map 함수를 이용해서 명목형 변수를 숫자로 바꿔주는 것이고 두번째는 연속형 변수를 MinMaxScaling을 활용해 0~1사이의 값으로 변환하는 것이다.  그럼 아래처럼 변화폭이 크지 않은 숫자들로 구성된 테이블이 완성되고 이는 머신러닝에 학습시킬 첩정 프레임으로 활용할 운 있다. 

대륙, 포지션, 사용하는 징검다리 등의 변수는  명목형 변수이기 그리하여 원핫인코딩을 사용하는게 무장 좋은데 그럼 변수가 대단히 많아져서 일단 플러스 상태도 머신러닝을 사용해보았다.

직위 그래프는 맨 시초 train set으로 그린 것이었고, 저의 그래프는 예측한 값으로 그린 것이다. 대개 비슷하게 나온다. 각 대륙별, 선호하는 발별, 포지션별 그래프를 그려서 비교해보아도 거의 비슷하게 그래프가 그려진다. 금시 dacon에 코드쉐어를 여름철 위해서 모델 성능을 개선해야 하는데 얼마간 한결 공부해보고 버금 포스팅에서 해야겠다.

Post by: 페저주카
Category: sports