목록전체 글 (176)
Yours Ever, Data Chronicles

보통 특정 문자로 시작하거나 끝나는 경우를 SQL에서 검사하기 위해 LIKE 연산자를 많이 사용한다. 그런데, 특정 문자 1개가 아니라 여러 개를 검사해야 하는 경우는 어떻게 하면 될까? 이와 관련한 문제 3개를 알아보자. ✔Table of Contents 1. 특정 문자들로 시작하는 도시 출력하기 STATION 테이블에서 모음(a, e, i, o, u)으로 시작하는 CITY를 출력하라. CITY의 중복은 포함하지 않는다. 문제 바로가기(클릭) SQL에서 특정 문자로 시작하는 경우엔 LIKE '특정문자%' 를 사용하면 된다. 그런데 이렇게 특정 문자가 여러 개일 때는 어떻게 해야할까? 바로 OR를 사용하면 된다. (참고로 SQL은 대소문자를 구분하지 않으므로 A, E, I, O, U는 대문자로 쓰든 소문..

HackerRank의 SQL 문제를 풀다가 흥미로운 문제를 발견해서 포스팅한다. (문제 바로가기) Query the two cities in STATION with the shortest and longest CITY names, as well as their respective lengths (i.e.: number of characters in the name). If there is more than one smallest or largest city, choose the one that comes first when ordered alphabetically. 번역하면, STATION 이라는 테이블의 가장 짧은 이름의 CITY와, 가장 긴 이름의 CITY를 구하라는 문제이다. 주의할 점은 혹시 CI..

저번 포스팅에서는 명목형 변수 중에서 nom_9 변수를 제거하여 0.804의 성능으로 향상시켰다. 이번 포스팅에서는, 사용했던 모델인 '로지스틱 회귀' 모델을 하이퍼 파라미터 튜닝하여 좀 더 성능을 향상시켜 보자! 데이터를 불러오는 과정은 앞의 포스팅과 똑같으므로 생략하고, 범주형 변수 인코딩 하는 부분과 모델 하이퍼 파라미터 튜닝하는 부분은 함수로 만들어서 좀 더 코드를 간결하게 만들어보았다. 참고로 하이퍼 파라미터 튜닝은 시간이 꽤 오래 걸리니 코드 실행 시 주의하자! (적으면 10분, 많으면 40분까지도 걸린다) 전체 코드는 이 깃허브에서 다운받을 수 있다 :) ✔Table of Contents 1. nom_9 변수 제외 & 하이퍼 파라미터 튜닝 함수화 먼저 데이터를 불러오고, 데이터 인코딩 하는 ..

이전 포스팅에서는 범주형 변수를 전처리하기 위한 인코딩을 하고, 기본적인 베이스라인 모델을 만들어 제출까지 해보았다. 이번 포스팅부터는 성능을 개선하기 위한 여러 방법들을 시도해보자! 내가 시도해본 방법은 다음과 같다. 1) 명목형 변수인 nom_*의 변수 개수 조정 (nom_5~ nom_9번 변수는 의미있는 변수인지 모르니까) 2) 로지스틱 회귀의 하이퍼 파라미터 튜닝 이번 포스팅에선 1번을 해본다. 참고로 전체 코드는 나의 깃허브에서 다운받을 수 있다 :) ✔Table of Contents 1. 데이터 불러오기 import pandas as pd import numpy as np import warnings warnings.filterwarnings("ignore") train = pd.read_cs..

저번 EDA 포스팅을 통해 범주형 변수들이 어떤 카테고리 값을 갖고 있는지와, target과의 관계를 파악하였다. 그리고 주어진 모든 범주형 변수가 target과 유의미한 관계가 있다는 것을 알 수 있었다. (하지만 명목형 변수 nom_5~nom_9는 카테고리가 워낙 많아 검증이 필요하다.) 이번에는 베이스라인 모델을 만들어본다. 주어진 범주형 변수들을 활용해 target을 예측하는 모델을 만들어 볼 것이며, 베이스라인 모델이므로 가장 간단한 형태로 만들 것이다. 이번 포스팅에서는 범주형 변수를 전처리하는 변수 인코딩(Encoding) 방법과, 아주 간단한 로지스틱 회귀 모델을 만들어 보고 score가 얼마가 나오는지 알아보자. ✔Table of Contents 1. 범주형 변수 인코딩(Encoding)..

어른의 시간: 완벽하지 않은 날들을 위한 인생 수업 - 줄리 리스콧-헤임스 지음, 온워드(2022) 우연히 유튜브에 뜬 책 추천 영상을 보고 만나게 된 책이다. 어떤 내용을 담고 있는지도 잘 몰랐지만 그냥 제목을 보자마자 ‘이건 나를 위한 책’이라는 생각이 들었다. 그리고 그 생각은 적중했다. 2022년 하반기를 맞이하며, 내가 정말 감명깊게 읽은 책이다. 이 책의 내용을 한 단어로 소개하자면 바로 “자립” 이다. 개인이 어른이 된다는 의미는 부모의 품에서 벗어나 독립을 한다는 의미이기도 하다. 이제는 더 이상 부모님의 바람에 따라 살지 않고, 자신이 원하는 자신의 삶을 살아가는 것이다. 이 책은 바로 ‘자립을 하는 방법’에 대해 다루고 있다. 그래서 내가 더 이 책을 인상 깊게 읽을 수 있었고, 어떻게..

저번 포스팅에 이어, 이번에는 나머지 범주형 변수들에 대해 EDA를 진행한다. ✔Table of Contents 4. nom_* 변수 EDA (feat. 통계의 함정) 이 변수는 명목형 변수로, 저번 포스팅에서 봤던 bin_* 변수는 고유값이 단 2개였지만 이 변수는 고유값이 여러개이다. 먼저 nom_* 변수를 담은 list2를 만들고, 각 변수별 고유값을 살펴보자. list2 = list() for i in range(0, 10): list2.append('nom_{0}'.format(i)) for ind, col in enumerate(train[list2]): print(col, '의 고유값은: ', train[col].unique()) 결과를 보면 굉장히 스크롤 압박이 심하다. nom_0 ~ no..

두번째로 해본 캐글 프로젝트는 범주형 데이터를 분석하는 프로젝트, Categorical Feature Encoding Challenge이다. 링크를 클릭하면 캐글에서 데이터셋을 다운받을 수 있다. 이 프로젝트에서 사용되는 데이터는 전부 범주형 데이터셋이다. 학습에 사용되는 피처들뿐만 아니라 target 변수까지 모두 범주형 데이터로 되어 있다. 그래서 이번 프로젝트 (특히 EDA 편)에서는 범주형 데이터를 어떻게 분석하는지를 자세히 다룰 것이다. (여담인데, 이 프로젝트 캐글 페이지에 고양이가 있는 이유는 범주형 데이터 분석(Categorical Data)를 줄여 cat-in-the-dat 이라고 이름을 만들었기 때문! 귀엽당...) 또한 이 프로젝트와 포스팅에서 사용된 코드는 나의 깃허브에서 다운받을 ..

안녕하세요, Everly입니다. 오늘도 좋은 아침입니다 :) 저번 주에는 제가 챌린저스를 알게 되어 약 1주일 동안 진행한 챌린지 후기와 챌린저스 사용 후기를 올렸었는데요! 챌린저스는 습관 형성을 위해 보통 2주 동안 챌린지를 진행합니다. (가끔 보면 4주 진행이나 하루 진행도 있긴 하더라구요) 제가 그동안 도전했고 습관화하고자 했던 챌린지는 '미라클 모닝' 과 '12시 전 취침' 챌린지였고, 모두 100% 완료했습니다 😆 과연 상금을 얼마나 받았을지, 저에게 나타난 변화는 무엇이었는지를 지금부터 리뷰해보고자 합니다 ! 먼저 이 챌린지는 2주, 평일 동안만 진행된 챌린지였습니다. 저는 22.06.27~22.07.08 동안 참여했습니다. 7월 9일 토요일 오후 12시 30분에 집계가 되더라구요. (궁금한게..

파이썬 그래프를 그릴 때, 한 그래프에 더 많은 정보를 담고자 한다면 이중 축을 활용한다. 예를 들어 밑의 예시처럼, (좌측) 특정 변수의 countplot 및 비율만 그릴 수도 있겠지만 (우측) 오른쪽에 이중 축을 하나 더 만들어 또다른 변수의 값이 1인 비율도 나타낼 수 있다. 이렇게 이중 축을 만들고자 할 때, seaborn의 ax.twinx() 를 활용하는 방법을 알아보자. NOTE: 코드는 저의 깃허브에서 내려받을 수 있습니다! 먼저, 좌측 그래프는 앞의 포스팅에서 이미 그렸다. 이번 포스팅에서는 앞에서 그린 비율 countplot에 하나의 이중축을 더 만들어볼 것이다. 이중축은 'nom_1' 변수의 각 고유값들이 target = 1로 갖고 있는 비율을 나타내보자! import pandas as..