본문 바로가기

Data Handling

(17)
selenium - 지하철역 인근 점포 수(카페, 호프집, 제과점 등) 크롤링 서울역 근처에는 카페가 몇 개 있을까? 강남역 근처에는 빵집이 몇 개 있을까? 이태원역 근처에는 술집이 몇 개 있을까? 오늘은 이 물음에 대한 솔루션을 주제로 포스팅을 준비해봤습니다. 바로 시작해볼게요! 준비물 서울시 상권 데이터 - 크롤링 지하철역 주소 데이터 - 파일 다운 법정동, 행정동 맵핑 데이터 - 파일 다운 1. 서울시 상권 데이터 먼저 서울시의 '상권분석서비스'에서 특정 지역의 점포 수를 크롤링하는 과정입니다. 준비물에 걸어둔 링크로 들어가시면, 지역별로 다양한 형태의 데이터를 제공하는 것을 확인할 수 있습니다. 그 중 저는 2018년 1, 2, 3, 4분기, 2019년 1분기의 외식업 데이터, 특히 제과점, 호프/주점, 카페 수 데이터를 필요로 합니다. 해당 데이터는 url로 들어가면 바로..
seaborn 완벽 정리 여러분은 처음 seaborn을 어떻게 사용했나요? seaborn이 시각화에 좋다고 해서 그냥 import seaborn as sns 를 하고, 있을 법한 그래프를 메소드로 써서 실행시켜보시지는 않았나요? displot이 어떤 plot인지도 모른채로, sns.distplot 인가, sns.displot 인가 고민하시지는 않았나요? 네, 제가 그랬습니다. 그래서 정리했습니다. seaborn!! * 참고 자료 : seaborn.pydata.org/tutorial/function_overview.html seaborn은 matplotlib 기반의 파이썬 시각화 라이브러리 입니다. matplotlib 보다 더 이쁘고 쉽게 만들수 있다고 알려져 있죠. 그런데 이 seaborn 도 크게 두 가지 함수로 나뉘어져 있다..
matplotlib 완벽 정리 데이터 분야 공부를 시작할때 가장 먼저 만나는 세 가지 라이브러리를 꼽자면 numpy, pandas, matplotlib 입니다. 오늘은 그 중 matplotlib 에 대해서 정리해볼텐데요, 개인적으로 처음 이 라이브러리를 접했을때 정말 헷갈렸습니다. 어떤 커널에서는 plt.plot으로 표현하고, 또 다른 커널에서는 ax.plot 혹은 axes[0,0].plot으로 표현되어있기 때문입니다. 그리고 가령 히스토그램을 그린다면 누구는 plt.hist로 구현했는데, 또 다른 누구는 plt.plot(kind='hist)로 구현했기 때문에 일목요연하게 정리되지 않았습니다. 그래서 오늘 포스팅을 기획하게 되었는데요, 해당 포스팅의 목적은 두 가지 입니다. 첫 번째, 왜 이렇게 표현방식이 다양하고, 어떻게 정리할 수..
Feature selection : feature importance vs permutation importance 안녕하세요, 오늘은 Feature selection 에 대해 다뤄보려고 합니다! Feature selection은 말 그대로 모델에 사용될 feature를 선택하는 과정입니다. feature가 그냥 많으면 많을수록 좋은거 아닌구요? 네!! 아닙니다!! 예측에 도움이 되는 feature는 많으면 많을수록 좋지만, 어떤 특성들은 예측에 아무런 도움이 되지 않아 시간만 소모하기도 하고 또 어떤 특성들은 오히려 성능을 떨어뜨리기도 하기 때문에 제거해주는편이 좋습니다. 그럼 어떤 기준으로 중요한 특성과 그렇지 못한 특성으로 구분할까요? 오늘 소개해드릴 기준은 feature importance와 permutation importance 입니다. 순서 feature importance 개념 및 코드 동작 원리 per..
언더 샘플링(Undersampling)과 오버 샘플링(Oversampling) * 해당 포스팅은 파이썬 머신러닝 완벽 가이드(권철민, 2019) 교재를 참고하여 공부하며 작성한 글입니다. 순서 언더 샘플링과 오버 샘플링의 개념 SMOTE 개념 SMOTE 코드 1. 언더 샘플링과 오버 샘플링의 개념 데이터가 불균형한 분포를 가지는 경우, 모델의 학습이 제대로 이루어지지 않을 확률이 높습니다. 이 문제를 해결하기 위해 나온 개념이 언더 섬플링(Undersampling)과 오버 샘플링(Oversampling)입니다. 언더 샘플링은 불균형한 데이터 셋에서 높은 비율을 차지하던 클래스의 데이터 수를 줄임으로써 데이터 불균형을 해소하는 아이디어 입니다. 하지만 이 방법은 학습에 사용되는 전체 데이터 수를 급격하게 감소시켜 오히려 성능이 떨어질 수 있습니다. 오버 샘플링은 낮은 비율 클래스의 ..
IQR 방식을 이용한 이상치 데이터(Outlier) 제거 * 해당 포스팅은 파이썬 머신러닝 완벽 가이드(권철민, 2019) 교재를 참고하여 공부하며 작성한 글입니다. 이상치 데이터(Outlier)는 모델의 성능을 떨어뜨리는 불필요한 요소이기 때문에 꼭 제거해주어야 합니다. 그렇다면 어떻게 이상치 데이터를 찾을 수 있을까요? 1차적으로 EDA 과정에서 그래프를 통해 발견할 수 있습니다. 하지만 이 방법은 소수의 데이터가 평균으로부터 눈에 띄게 떨어진 경우에만 가능하다는 한계가 있습니다. 따라서 "어디까지가 이상치 데이터다" 라고 판단하는 기준이 필요하게 되는데요, 여러가지 방법들 중 오늘은 IQR(Inter Quantile Range) 방식에 대해서 정리해보겠습니다. IQR 방식은 사분위(Quantile) 개념으로부터 출발합니다. 전체 데이터들을 오름차순으로 정..
피쳐 스케일링 (Feature Scaling) * 해당 포스팅은 파이썬 머신러닝 완벽 가이드(권철민, 2019) 교재를 참고하여 공부하며 작성한 글입니다. 순서 표준화(Standardization) - StandardScaler 정규화(Normalization) - MinMaxScaler fit(), transform() 의 역할 log 변환 1. 표준화 (Standardization) - StandardScaler 값들이 평균으로부터 얼마나 떨어져 있는지 나타내는 방법입니다. 평균을 빼고 표준편차로 나눠주면서 가우시안 정규분포(평균=0, 분산=1)를 가진 값들로 변환하는데, 이는 단위가 서로 다른 특성들의 변화를 비교하기에 적합합니다. 예를 들어 키가 177이고 몸무게가 70인 열로 특성을 가지기 보다, 키와 몸무게가 평균보다 각각 얼만큼 큰지를 ..
범주형 변수 처리 - 인코딩(Encoding) 다음과 같은 데이터 프레임이 있다고 가정해봅시다. 흔히 'subject'와 같은 값의 형태를 가진 변수를 '범주형 변수', 'score'와 같은 값의 형태를 가진 변수를 '수치형 변수'라고 합니다. '범주형 변수'의 경우, 모델링을 하기 전에 컴퓨터가 이해하기 쉬운 숫자의 형태(정수형)로 인코딩해야 하는데, 오늘은 그 방법에 대해서 정리해보겠습니다. 순서 Label encoding One hot encoding get_dummies() factorize() ● Label encoding 문자형을 정수형으로 인코딩하는 과정입니다. 예를 들어 'english', 'korean', 'math'를 0, 1, 2 처럼 변환시키는 것입니다. from sklearn.preprocessing import LabelEn..