본문 바로가기

Analytics/Study

(30)
실전#5 미국의 대통령은 어떻게 뽑힐까(1) 이번 주제는 US Election 2020 데이터셋을 사용한다. kaggle 링크도 함께 참고하자 https://www.kaggle.com/datasets/unanimad/us-election-2020 US Election 2020 Race to Presidential Election 2020 by County www.kaggle.com 실제 kaggle에서는 11개의 파일을 제공하는데 강의에서는 이 중 정보가 가장 많은 2개의 파일을 사용한다. president_county_candidate.csv: 대통령 투표 결과 governors_county_candidate.csv: 카운티 지사 투표 결과 추가로 보조 데이터도 함께 제공되는데 이 중 1개의 보조 데이터를 참고한다 acs2017_county_da..
실전#4 오늘 밤 유럽 축구, 어디가 이길까(7) 모델 성능 개선에 대한 내용 바로 직전 내용이지만, 다시 한번 정리하고 넘어가는게 좋을 것 같다. 매치 정보와 팀 데이터를 토대로 모델 학습을 진행하였고, 모델의 성능이 좋은 편은 아니었다. 그래서 모델의 성능 개선을 위한 고민이 자연스럽게 진행되는데 최초 가지고있던 데이터셋 기준에서 보면, 선수들에 대한 데이터도 있었다는 걸 알 수 있다.(df_player_att) EDA 과정에서 보았던 df_player_att 테이블의 특징 중 하나는 overall_rating 변수 기준 다른 변수들과의 상관성이었다. 골키퍼(gk) 관련 변수들을 제외하고는 다른 변수들과의 상관성이 있었기에 df_player_att 테이블에서 overall_rating 변수 만을 가지고 추가 정보를 담아보려고 한다. ※ 물론, 다른 ..
실전#4 오늘 밤 유럽 축구, 어디가 이길까(6) 이제 모델 학습 및 심화 분석 과정이다. 바로 본론으로 들어가보자 Logistic Regression from sklearn.linear_model import LogisticRegression # LogisticRegression 모델 생성/학습 model_lr = LogisticRegression(max_iter = 10000) model_lr.fit(X_train, y_train) 동일하게 로지스틱 회귀분류 모델을 생성/학습한다. 이 때 옵션에 추가되는 max_iter는 과소적합을 줄이기 위한 방법이다. 과소적합을 줄이기 위해 alpha 값 조정이 필요한데 max_iter(반복 실행하는 최대 횟수)를 통해 조정할 수 있다. 물론 alpha값을 낮추면 모델의 복잡도는 증가하는 반면, train과 te..
실전#4 오늘 밤 유럽 축구, 어디가 이길까(5) 이제 전처리 및 모델링 과정! 분석의 끝이 보인다. 이 주제를 실제로 진행했다고 상상해보면, 아마 EDA에서 허덕이고 있었을 것 같다... 우선 앞에서 EDA를 통해 나름 의미있는 데이터프레임 셋을 만들었는데, 이제 해야될 일은 데이터 전처리 과정이다. 우선 다시 한번 더 기억을 상기하기 위해 df 테이블을 살펴보자 변수들 중 수치형과 범주형이 뒤섞여 있고, 최종 타겟은 matchResult로 정리되어있다. 다행스럽게도 범주형 변수들은 Class로 구분된다는 특징이 있다. 이 특징을 참고하여 범주형 변수들만 따로 모아놓은 col_cats를 만들어보자 col_cats = list(filter(lambda s: s.find('Class') >= 0, df.columns)) df_cats = pd.get_du..
실전#4 오늘 밤 유럽 축구, 어디가 이길까(4) EDA 3번째 시간 이번 목표는 아래 3가지이다. 선수 특성 사이의 상관성을 파악해보기 매치 데이터에 팀 특성 데이터를 통합하기 홈, 어웨이 골 정보를 활용하여 승/무/패 범주로 변환하기 선수 특성 사이의 상관성 파악하기 상관성 파악을 위해 heatmap으로 corr() 을 그려보자 fig = plt.figure(figsize = (5, 15)) sns.heatmap(df_player_att.drop(['id', 'player_fifa_api_id', 'player_api_id'], axis = 1).corr()[['overall_rating']], annot=True) 이전에 진행했던 heatmap 코드들과 비교했을 때 조금 더 복잡해보일 수 있지만, 의미는 크게 달라진게 없다. 우선 상관성 파악과 무..
실전#4 오늘 밤 유럽 축구, 어디가 이길까(3) EDA 2번째 데이터의 복잡성이 올라간만큼 EDA 과정이 길고 난이도도 올라간다. 강의 하나 따라가면서도 pause와 뒤로가기를 반복하고 있는데 강의에서 진행하는 방법이 무조건 정답은 아니라는 사실을 항상 인지하고 데이터를 대할 필요가 있을 것 같다. 이번 주제? 목적?은 데이터프레임간의 관계를 파악하는 것이다. 결과만 보면 얼마되지 않는 양일 수 있지만, 실제 소요된 시간이 꽤 많아서(사실 EDA를 오늘로 끝낼줄 알았다) 이렇게 정리하는 것도 생각보다 양이 길어질 것 같다. 목적을 조금 더 세부적으로 정리하면 다음과 같다. 데이터프레임(=테이블) 간 공통으로 사용되는 키 값 정보들을 활용하여 의미있는 변수로 담아낼 수 있도록 한다. 주 대상이 되는 테이블은 선수 능력?이 정리된 df_player_att..