AI,머신러닝/AI,ML 연습

(dacon) 축구선수 유망 여부 예측

깨비아빠0 2023. 11. 29. 13:12
728x90
반응형

 

 

 

dacon 축구선수 유망 여부 예측 예제를 따라해보았다.

https://dacon.io/edu/1011

 

축구선수 유망 여부 예측 프로젝트

축구 선수의 특성 데이터를 살펴보고, 상관관계를 분석해 유망한 선수인지 여부를 판단하세요!

dacon.io

 

데이터 다운로드를 위해 대회에도 등록

https://dacon.io/competitions/official/236031/overview/description

 

데이콘 Basic 축구선수의 유망 여부 예측 AI 경진대회 - DACON

분석시각화 대회 코드 공유 게시물은 내용 확인 후 좋아요(투표) 가능합니다.

dacon.io

 

 

목적

본 프로젝트에서는 16~21세의 축구 선수 데이터를 기반으로 유망성을 예측하는 모델을 만들게 됩니다. 특히 상관관계 분석을 학습하고 모델에 적용해 봐요. 다양한 방법으로 데이터를 확인하고, 분석 목적에 맞춰 모델을 학습시키는 방법을 익히며 데이터 분석 과정을 경험하게 되실 거예요!


데이터의 칼럼은 다음과 같습니다.

66개의 칼럼(column)이 존재하므로 그 중에서 일부 칼럼만을 살펴보겠습니다.

  • ID : 해당 데이터에서의 고유한 ID

선수의 고유 신체 스펙

  • Age : 나이
  • Height : 신장(cm)
  • Weight : 몸무게(kg)

선수 정보 : 프로필

  • Position : 선수의 포지션
  • PreferredFoot : 선수가 선호하는 발(왼발/오른발)
  • AttackingWorkRate : 공격적 플레이에 대한 선호도
  • DefensiveWorkRate : 수비적 플레이에 대한 선호도

선수 정보 : 57개의 신체 스펙 칼럼 중 일부

  • PaceTotal : 속력 및 가속력 종합
  • ShootingTotal : 선수의 슈팅 능력
  • PassingTotal : 선수의 전체적인 패스 능력
  • Composure : 침착함에 대한 점수

예측해야하는 값(TARGET)

  • Prospect : 선수의 유망 여부(0/1)
# 데이터 정보
train.info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3019 entries, 0 to 3018
Data columns (total 66 columns):
 #   Column             Non-Null Count  Dtype  
---  ------             --------------  -----  
 0   ID                 3019 non-null   object 
 1   Age                3019 non-null   int64  
 2   Height             3019 non-null   int64  
 3   Weight             3019 non-null   int64  
 4   Position           3019 non-null   object 
 5   PreferredFoot      3019 non-null   object 
 6   AttackingWorkRate  3019 non-null   object 
 7   DefensiveWorkRate  3019 non-null   object 
 8   PaceTotal          3019 non-null   float64
 9   ShootingTotal      3019 non-null   float64
 10  PassingTotal       3019 non-null   float64
 11  DribblingTotal     3019 non-null   float64
 12  DefendingTotal     3019 non-null   float64
 13  PhysicalityTotal   3019 non-null   float64
 14  Crossing           3019 non-null   float64
 15  Finishing          3019 non-null   float64
 16  HeadingAccuracy    3019 non-null   float64
 17  ShortPassing       3019 non-null   float64
 18  Volleys            3019 non-null   float64
 19  Dribbling          3019 non-null   float64
 20  Curve              3019 non-null   float64
 21  FKAccuracy         3019 non-null   float64
 22  LongPassing        3019 non-null   float64
 23  BallControl        3019 non-null   float64
 24  Acceleration       3019 non-null   float64
 25  SprintSpeed        3019 non-null   float64
 26  Agility            3019 non-null   float64
 27  Reactions          3019 non-null   float64
 28  Balance            3019 non-null   float64
 29  ShotPower          3019 non-null   float64
 30  Jumping            3019 non-null   float64
 31  Stamina            3019 non-null   float64
 32  Strength           3019 non-null   float64
 33  LongShots          3019 non-null   float64
 34  Aggression         3019 non-null   float64
 35  Interceptions      3019 non-null   float64
 36  Positioning        3019 non-null   float64
 37  Vision             3019 non-null   float64
 38  Penalties          3019 non-null   float64
 39  Composure          3019 non-null   float64
 40  Marking            3019 non-null   float64
 41  StandingTackle     3019 non-null   float64
 42  SlidingTackle      3019 non-null   float64
 43  GKDiving           3019 non-null   float64
 44  GKHandling         3019 non-null   float64
 45  GKKicking          3019 non-null   float64
 46  GKPositioning      3019 non-null   float64
 47  GKReflexes         3019 non-null   float64
 48  STRating           3019 non-null   float64
 49  LWRating           3019 non-null   float64
 50  LFRating           3019 non-null   float64
 51  CFRating           3019 non-null   float64
 52  RFRating           3019 non-null   float64
 53  RWRating           3019 non-null   float64
 54  CAMRating          3019 non-null   float64
 55  LMRating           3019 non-null   float64
 56  CMRating           3019 non-null   float64
 57  RMRating           3019 non-null   float64
 58  LWBRating          3019 non-null   float64
 59  CDMRating          3019 non-null   float64
 60  RWBRating          3019 non-null   float64
 61  LBRating           3019 non-null   float64
 62  CBRating           3019 non-null   float64
 63  RBRating           3019 non-null   float64
 64  GKRating           3019 non-null   float64
 65  Prospect           3019 non-null   int64  
dtypes: float64(57), int64(4), object(5)

 

모델 생성

다음과 같이 로지스틱 회귀 모델(sklearn.linear_model.LogisticRegression)을 생성해보는 튜토리얼이다.

# 1.pandas를 이용해 csv 파일 읽어오기
import pandas as pd

train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
submission = pd.read_csv('sample_submission.csv')


# 2. 범주형 변수 제거
not_numeric = ['ID', 'Position', 'PreferredFoot', 'AttackingWorkRate', 'DefensiveWorkRate']

train_transfered = train.drop(not_numeric, axis = 1)
test_transfered = test.drop(not_numeric, axis = 1)


# 3.train 데이터프레임에서 Prospect과의 상관관계가 높은 상위 7개 피처 추출
abs_corr = abs(train_transfered.corr()['Prospect'])
abs_corr_sort = abs_corr.sort_values(ascending=False)[1:8]
col_names = abs_corr_sort.index
col_names


# 4. x_train / y_train 추출
x_train = train_transfered[col_names]
y_train = train_transfered['Prospect']


# 5. 학습/검증 세트 분리
from sklearn.model_selection import train_test_split

train_x, val_x, train_y, val_y = train_test_split(x_train, y_train, test_size=0.2, random_state=42)


# 6. LogisticRegression(로지스틱 회귀) 모델 학습
from sklearn.linear_model import LogisticRegression

model = LogisticRegression(max_iter=5000)
model.fit(train_x, train_y)


# 7. 로지스틱 회귀 모델의 검증 데이터에 대한 Micro F1 Score 평가
from sklearn.metrics import f1_score

val_pred = model.predict(val_x)
score = f1_score(val_y, val_pred, average='micro')

print('Micro F1 Score: ',score)


# 8. 로지스틱 회귀 모델을 사용하여 test 데이터셋에 대해 예측 수행# 
test_x = test_transfered[col_names]

y_pred = model.predict(test_x)
y_pred


# 9. 예측 결과를 submission 데이터프레임에 추가
submission['Prospect'] = y_pred
submission.head()


# 10. submission 파일 저장하기
submission.to_csv('submission.csv', index=False)
반응형

'AI,머신러닝 > AI,ML 연습' 카테고리의 다른 글

(dacon) 농산물 가격 예측 (시계열 분석)  (4) 2023.12.05
(kaggle) titanic  (0) 2023.07.26