목록Data Analysis (20)
KorSA
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dxvR9b/btsoicClfdV/IHBzNNPsbuSVEzD11skAJ1/img.png)
Kaggle은 각 문제마다 train 데이터셋과 test 데이터셋, sample_submission 데이터셋을 제공한다. 우리가 머신러닝 모델을 만들었다면 최종적으로 test 데이터셋의 예측값들을 Kaggle에게 알려주어야 한다. 이 과정은 보통 submission.csv 파일을 만들어서 Kaggle에 업로드하면 간단히 끝낼 수 있다. 우선 제출할 데이터가 아래와 같이 있다고 하자. print(submission_data.head()) print(submission_data.describe()) submission_data.info() Pandas DataFrame 인 submission_data 변수로부터 submission.csv 파일을 만들어야 한다. 이 파일은 아래 코드로 간단히 생성할 수 있다...
머신러닝 전략 중에서 성능을 높이기 위해 사용하는 방법 중 하나는 다수결의 원칙을 따르는 것이다. 1과 0중 하나를 예측해야 할 때 모델 A는 1, 모델 B는 0, 모델 C는 1을 예측했다면 다수결에 따라 최종 예측을 1로 한다. 이를 Hard Voting 이라 한다. 각 모델은 1과 0을 예측할 때 Hard Voting 처럼 둘 중 하나만 지정할 수도 있고, 0.8의 확률로 1이 예측되고 0.2의 확률로 0이 예측된다고 말할수도 있다. 만약 모델 A가 1을 0.8, 0을 0.2의 확률로 예측하고 모델 B가 1을 0.7, 0을 0.3의 확률로 예측하고 모델 C가 1을 0.2, 0을 0.8의 확률로 예측했다면 1의 최종 예측 확률은 (0.8 + 0.7 + 0.2) / 3 = 0.57, 0의 최종 예측 확률..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dKDiih/btsnLwaUOLH/GL8mUEGPzvBGLcHfkGZQW1/img.png)
머신러닝 문제를 풀다가 모델의 학습 시간이 길다고 해서 성능이 좋은 건 아니라는 사실을 알게 되었다. 아래 코드를 통해서 여러 머신러닝 모델의 학습 시간을 측정하였다. # 리스트 준비 models = [ran, knn, log, xgb, gbc, svc, ext, ada, gnb, gpc, bag] model_names = ['Random Forest', 'K Nearest Neighbour', 'Logistic Regression', 'XGBoost', 'Gradient Boosting', 'SVC', 'Extra Trees', 'AdaBoost', 'Gaussian Naive Bayes', 'Gaussian Process', 'Bagging Classifier'] scores = {} # 모델 튜닝 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bBVeN0/btsnwQHyBjb/udJUAKU9xS5e0wR2ugKrIK/img.png)
각 컬럼별로 어느 구간에 데이터가 몰려있는지 알고 싶다면 seaborn의 displot을 사용해보자. import random import seaborn as sns rand_data = [] for _ in range(1, 10000): # 10000개의 난수 생성 rand_data.insert(0, random.randrange(0, 10001)) # 생성된 난수는 0~10000 사이의 값을 가짐 sns.displot(data = rand_data, kind='kde').set(title='Random Values') 위의 예제는 0~10000개의 난수를 생성하여 rand_data 배열에 넣고 이 난수들의 분포를 seaborn을 통해 시각화하는 코드이다. 참고로, 각 난수는 0~10000 사이의 값을..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/TkVtR/btsmkxvURyf/ykZ9GJV9V4gLvjhrDsT0VK/img.png)
EDA 과정에서 도움이 되는 기본적인 Pandas 함수들을 titanic 데이터를 활용하여 알아보자. 우선, 아래는 예제 데이터이다. 위 데이터를 가지고 Pandas 함수를 사용해보자..! 1. shape 데이터의 행과 열을 (행, 열) 형식으로 표시해준다. titanic_train.shape 2. dtypes 데이터의 각 컬럼별 자료형을 알려준다. titanic_train.dtypes 3. columns 데이터의 컬럼들을 알려준다. titanic_train.columns 4. head & tail 데이터의 일부 row를 앞에서부터 보고 싶을 경우 head 함수를, 뒤에서부터 보고 싶을 경우 tail 함수를 사용한다. 기본 갯수는 5개이며 직접 지정 가능하다. titanic_train.head() tit..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/CE0yg/btsl6URoGXB/kbtxBtN8ukR4jPsrXfLG60/img.png)
When 분석하고자 하는 데이터 중 어디가 얼만큼 비어있는지(결측값) 확인할 때 유용하다. missingno를 쓰면 데이터가 존재하는 부분은 검은색으로, 존재하지 않는 부분은 하얀색으로 표시된다. Result titanic_data는 train 데이터 뒤에 test 데이터를 덧붙인 데이터이기 때문에 위 그림에서 Survived 뒤쪽이 전부 하얗다. test 데이터는 모두 Survived 값이 없기 때문이다. Code import missingno missingno.matrix(titanic_data, figsize=(12,6)) Data Kaggle Titanic Data
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eaeemh/btrx5z3OwsZ/IPMp8likTceIJAJ4HORxa0/img.gif)
이 글은 "RANDOM FOREST TUTORIAL: PREDICTING GOALS IN SOCCER"를 읽고 작성한 글입니다. 축구에서 골이 나올 확률을 계산하고자 할때, 유용한 방법으로 Random Forest가 있다. Random Forest를 말하기 전에, 주어지는 데이터를 살펴보면 다음과 같다. 1. 슈팅한 위치와 골대와의 거리 2. 슈팅한 위치와 골대와의 각도 3. 공격팀의 수준 4. 수비팀의 수준 5. 슈팅하는 선수의 포지션(미드필더, 수비수, 공격수, 골키퍼 등..) 우리의 예측 모델은 위의 정보가 주어졌을 때 슈팅이 골로 연결되는지 안되는지 예측한다. Random Forest는 위에서 주어진 정보와 실제 골 여부를 바탕으로 여러 개의 Decision Tree를 실행한다. 각 Decisio..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bmN4BY/btrxzh3qSpc/082eKqTsJl6PMRKjrmZVr1/img.webp)
이 글은 "MAPPING GLOBAL CUISINE WITH WORD EMBEDDINGS"를 읽고 작성한 글입니다. 단어에 사칙 연산을 사용할 수 있다면 어떨까? 만약 번화가에서 팔고 있는 타르타르(Tartare)와 비슷한 일본 음식을 찾고 싶다면 우리는 아래와 같은 사칙 연산을 적용해 볼 수 있다. "Tartare" - "America" + "Japan" = ? 잘 훈련된 Word Embedding 모델을 사용하면 위의 결과로 "Sashimi"가 출력된다. 미국의 타르타르와 비슷한 일본 음식은 사시미인 것이다..! Word Embedding 모델은 단어들 사이의 추상적인 관계를 도출하는 도구로 사용될 수 있다. 내부 동작은 3단계로 이루어진다. Step 0. Window Size라고 불리는 목표 단어(..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bENMTK/btrvBl8sQ5y/P8ZMKi7kvHCJzx8XeS4ji1/img.png)
이 글은 DECISION TREES TUTORIAL을 읽고 작성한 글입니다. 타이타닉과 같은 재앙이 우리를 덮쳤을 때 살아남을 확률은 얼마나 될까? 우리가 만일 어린 아이이거나 여성일 경우 사회적인 통념 상 구원의 손길을 받아 살아남을 확률이 더 높을 것이다. 위급 상황에서는 여성과 아이들의 보호가 우선적으로 중요하기 때문이다. 우리가 살아남을 확률을 알아볼 때 Decision Tree를 사용하는 것이 좋은 선택이 될 수 있다. Decision Tree는 Yes, No와 같이 이분법적으로 대답할 수 있는 질문들로 구성된다. 당신은 남성인가? 여성인가? 당신은 성인인가? 미성년자인가? 와 같이 질문을 하고 그 대답에 따라 전체 데이터 집합을 여러개의 작은 집합들로 나눈다. 그리고 이 질문들을 하면 할수록 ..
이 글은 "TIME SERIES ANALYSIS WITH GENERALIZED ADDITIVE MODELS"를 읽고 작성한 글입니다. 시간의 흐름에 따라 나타나는 현상을 보고자 한다면 시계열(Time Series) 분석을 활용해보면 좋다. 단, 이 기법을 사용하려면 시간에 따라 일정한 경향이 있어야 한다. 어떤 우연한 사건들이 많으면 많을수록 시계열 기법은 그 효과가 감소하기 때문이다. 시계열 기법을 사용할 때 유용한 도구는 FaceBook에서 만든 Prophet이라는 라이브러리이다. 예언자라는 이름답게 이 라이브러리는 기존 데이터의 시계열을 분석해 미래에 어떤 경향이 나타날지 알려준다. 물론 완벽한 예측이란 있을 수 없고 더 먼 미래를 예측할수록 오차 범위도 더 커지지만 아무 정보도 없이 의사결정을 하..