앎을 경계하기

DAFIT 66

<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 06 Random Forest를 이용한 당뇨병 예측

지난번엔 Decision Tree였다면 이번에는 Random Forest이다. 랜덤 포레스트는 앙상블 방법 중 하나로 여러개의 의사결정트리가 모여서 classification이나 regression 문제를 푼다. sklearn.ensemble 내 RandomForestClassifier를 제공하고있다. from sklearn.ensemble import RandomForestClassifier from sklearn.model_selection import train_test_split import pandas as pd data = pd.read_csv("/content/drive/My Drive/다핏문제/906/dataset_37_diabetes.csv") data #데이터 결측치 처리와 ..

<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 05 Decision Tree를 이용한 당뇨병 예측

의사결정트리(Decision Tree)는 여러 분류 규칙을 적용하여 분류문제 또는 회귀문제에 적용할 수 있는 분류 모형이다. 아래 그림과 같이 트리 구조로 되어있는 분류 규칙을 따라서 classification 할 수 있다. scikit-learn에서 쉽게 decision tree를 사용할 수 있도록 제공하고 있다. from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split import pandas as pd import numpy as np 필요 패키지들 임포트해주고, data = pd.read_csv("/content/drive/My Drive/다핏문제/906/datas..

<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 04 데이터 분할

이번 문제는 본격적으로 데이터 셋을 만드는 문제이다. 학습데이터셋, 검증데이터셋, 테스트데이터셋으로 나누면 되는 문제. 사실 train validation test ratio만 검색해도 어떤 비율로 데이터를 나눠야하는 지 많이 나온다. 주로 train/test만 사용할때는 70/30 비율로 사용하고 train/validation/test는 60/20/20으로 사용한다. scikit-learn에서 제공하는 메소드를 사용하면 쉽게 데이터셋을 분리할 수 있다. train_test_split(x,y,test_size=0.25,random_state=1) 이런식으로 사용하면 된다. https://scikit-learn.org/stable/modules/generated/sklearn.model_selection...

<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 03 데이터 시각화

이번에는 data visualization 문제! 대학원 강의 중 visualization 관련 수업을 들은 적이 있어서 그런지 가장 편하게 접근할 수 있었던 문제였다. 1,2번 문제를 푼면서 데이터를 볼 때 불편했던 점들을 추려보니.. 1. 값이 전체적으로 어떤 범위 내에 위치하는지 모른다. 2. 이상치가 한 눈에 보이지 않는다. 3. 피쳐마다의 데이터가 어떻게 분포하고 있는지 보고싶다. 4. 내가 결측치 대체 방안으로 사용했던 median과 mean의 차이가 어느정도 나는지 알고 싶다. 이 정도로 말할 수 있을 것 같다. 그래서 나는 각 feature마다 boxplot을 사용해서 데이터를 시각화하였다. boxplot은 다음과 같이 생겼다. 상자수염그림라고도 하는데 왜 수염상자냐면 저 박스 위아래로 길..

<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 02 NaN값,NULL 값 처리하기 (+ 삽질연속, 실망스러운 결과..)

이번에는 데이터 결측치를 처리하는 문제였다. 데이터 결측치를 처리하는 방법론들이 대표적인게 있을 것 같아서 찾아보니 역시나 다양한 방법들이 있었다. https://m.blog.naver.com/tjdudwo93/220976082118 데이터 분석 최대의 적! 결측치(NA값)처리하기 이번 시간은 데이터 전처리 과정에서 가장 중요하다고 해도 과언이 아닌(물론 다 중요하지... blog.naver.com 이 블로그를 참고하면서도 잘 모르는 내용들이 있어서 다핏 단톡방에도 질문... 도움이 되는 답변들을 받았다! 일단은 데이터를 받으면 데이터들의 피쳐들간의 상관관계를 파악하라는 조언을 받아 데이터분석 모르지만,,ㅎㅎ 이것저것 찾아서 적용해보았다. 각 피처들에 대한 정보는 다음과 같다. preg: 임신 횟수 pl..

<DAFIT> 06 머신러닝을 통한 당뇨병 예측 - 01 데이터셋 다운로드 및 읽기

데이터셋은 아래 다핏 사이트에서 받을 수 있다. 첫 번째 문제는 굉장히 쉽다. pandas로 csv를 읽으면된다. import pandas as pd filepath = 'dataset_37_diabetes.csv' csv = pd.read_csv(filepath) csv 8개의 features로된 768개의 데이터를 확인할 수 있다. 문제와 데이터는 여기서 확인한다. http://www.dafit.me/question/?q=YToxOntzOjEyOiJrZXl3b3JkX3R5cGUiO3M6MzoiYWxsIjt9&bmode=view&idx=2682894&t=board [DF906] 머신러닝을 통한 당뇨병 예측 : 다핏, 데이터사이언스 연습문제 🔥 문제 설명당뇨병에 영향을 주는 8가지 특징을 바탕으로, 머신..

<DAFIT> 05 Regular Expression 02 - 날짜

문제를 보니 날짜가 될 수 없는 데이터는 변하지 않고 올바른 날짜인 경우에만 REPLACEDATE로 치환하는 문제다. 날짜가 될 수 없는 조건은 다음과 같다. 1. month = 0이하 13이상 2. day = 0이하 32이상 * 2월의 경우 day = 0이하 30이상 정규표현식을 사용할 수 있는 파이썬 라이브러리 re를 추가한다. import re 테스트케이스는 다음과 같이 구성하였다. testcase = ["2019.02.30","2019.06.41","2019.13.30","2000.00.01","2019-06-06", "2019/06/06", "2019.06.06", "19.06.06", "6/6", "06/13", "06월 3일", "6월 23일"] 테스트케이스 중 날짜가 되지 않는 데이터만 골..

<DAFIT> 05 Regular Expression 01 - 전화번호

먼저 regular expression을 사용하기 위해서 python 라이브러리인 re를 사용한다. import re 시내 전화, 서울, 기타 지역 전화를 필터링 하기 위해 메타 문자(특별한 용도로 사용하기 위한 문자)를 사용하여 정규표현식을 만들어보자. 시내전화의 경우, 3~9로 시작하는 8자리 전화번호 이거나 XXX-XXXX으로 된 7자리 전화번호이다. 먼저 3~9로 시작해도되고 아니어도 되기때문에 첫문자가 3~9여도되고 아니어도 되고를 표현하는 것은 ^[3-9]?이다. ^는 []밖에 있을 때 처음이라는 의미이다. []안에 -로 묶인 값은 범주를 나타낸다. ex) [a-z] = a~z, [0-9] = 0~9 ?는 있어도 되고 없어도 된다를 나타내는 메타문자이다. 그 뒤 XXX-XXXX은 반드시 앞 번..

<DAFIT> 04 한국어 데이터 Tokenizer 03 - 형태소 분석기 라이브러리

token.. id.. 이것들이 정확히 어떤 형태인지 몰라서 계속 문제를 못풀었는데.. 힌트가 있었다..왜 몰랐지..ㅠ (힌트 알려주신 다핏 방장님 감사합니다.) 무튼 Vocab에는 태깅이 된 형태소가 token이고 순서대로 id가 저장된다. python에서는 key로 value 가져오기는 쉽지만 value로 key를 가져오는 것은 함수가 존재하지 않기 때문에 다른 처리를 통해서 가능하다. 힌트에도 나와있지만 딕셔너리 구성은 token이 key이고 id가 value이다. vocab = {} with open('.\DF904_02_ㅁㅁㅁ.txt', mode='r', encoding='utf-8') as output: # 형태소/tag로 구성 id = 0 for opline in output.readline..

<DAFIT> 04 한국어 데이터 Tokenizer 02 - 형태소 분석기 라이브러리

데이터는 dafit에서 제공하는 html파일에서 다운로드 받을 수 있다. 링크를 들어가면 날짜별로 kowiki dump file을 다운로드 받을 수 있다. 문장 형태의 데이터가 있어야 형태소 분석을 했을 때 만족스러운 결과가 나타날 것이라고 생각했다. 그래서 아래 abstract가 있는 xml파일을 사용하기로 함. (파일을 빨리 열어서 구조를 봐야하기 때문에 사이즈가 좀 작은 파일을 선택한 것도 이유 중 하나) 뭐 이런식으로 생겼다. abstract 태그 데이터만 추출해서 형태소 분석을 하자. from konlpy.tag import Kkma import xml.etree.ElementTree as elemTree 사용할 라이브러리를 임포트한다. xml을 다뤄야하기 때문에 python 표준 라이브러리인 ..