내일은 예비군이라 TIL 작성을 못할 것 같다.. 😥
👉 오늘 한 일
- 파이썬 기술통계 라이브러리
- EDA_수치형 변수의 기술통계와 시각화
아나콘다 : 세계에서 가장 인기있는 Python 배포 플랫폼
주피터 : 파이썬 편집 도구.
- 코드를 블록 단위로 실행한 결과를 확인할 수 있고, 문서화도 함께 할 수 있음
파이썬 기술통계 라이브러리
추상화된 도구를 통한 기술통계 구하기
라이브러리를 사용하면 대용량 데이터에 사용하기 어렵고, 놓칠 수 있는 부분이 발생할 수 있고, 미세한 컨트롤이 불가능하는 등 단점이 존재함
pandas profiling : 자주 사용하는 기술통계들을 한번에 수행, 리포트 생성하는 라이브러리
pandas-profiling/pandas-profiling: Create HTML profiling reports from pandas DataFrame objects
- pandas, numpy와의 버전 호환성 이슈 체크
- 판다스 프로파일링 외에도 추상화된 도구들에서 내부 버전이 맞지 않아서 호환성 이슈가 발생할 수 있음
- .ipynb 파일 내부에서도 리포트를 볼 수 있으나
profile.to_file()
로 html파일 생성해서 보는 것을 추천
- overview : 전체적인 데이터 정보
- variable : 변수 하나하나의 정보
- distinct = unique. 유일값 개수
- 개별 변수가 수치형인지, 범주형인지에 따라 다른 통계값을 보여줌
- interaction : 수치형 변수 간의 분포
- correlations : 변수 간의 다양한 상관계수 값
- missing values : 결측치
sweetbiz : 추상화된 EDA를 해주는 도구. 마찬가지로 기술통계들을 한번에 수행하는 라이브러리
sweetviz · PyPI
- association : 수치형 데이터에 대한 상관계수, 범주형 변수에 대한 관계
- 장점 : 머신러닝 train, test 데이터셋에 대한 비교를 위해 만들어진 라이브러리라서 타겟 변수를 비교해볼 수 있음
autoviz : 기술통계들을 한번에 수행, 리포트 생성하는 라이브러리
AutoViML/AutoViz: Automatically Visualize any dataset, any size with a single line of code. Created by Ram Seshadri. Collaborators Welcome. Permission Granted upon Request.
- bokeh chart를 이용해 동적인 시각화 표현
- catplot, distplot, heatmap(corr), pair_scatter, violinplot 제공
seaborn.load_dataset : seaborn에서 기본적인 데이터셋 제공
- mpg(mile per galon) 데이터셋 활용
- 데이터는 메모리, 클라우드 상에 존재함
수치형 변수의 기술통계와 시각화
- cmap = plt.colormaps()
- plt.figure의 기본값 : (6.4, 4.8)
- 수치형 변수를 범주형 기술통계로 보고싶은 경우 : 변수 type값 변경(
astype()
) 후 describe 지정
- 시각화 시 로그가 거슬린다면 -> 변수에 넣어서 변수 호출 혹은 그래프 그린 뒤
plt.show()
혹은 ;
사용
.unique()
: 유일값들을 확인해보고 수치형 변수인지 범주형 변수인지 확인해보기 위해 사용
hue
는 한 그래프 내에서 범주별로 색상을 다르게 지정, col
은 값에 따라 그래프를 나누어 그려줌(서브플롯)
- plot마다 겹쳐서 그리는 것을 지원하는 것도 있고, 아닌 것도 있음
- hist => 빈도, kde=> 밀도 == 적분했을 때 1이 되는 값
- FacetGrid 기능: 서브플롯(변수 값에 따라서 다른 면에 표현하고자 할 때)
왜도(skewness)
- 실수 값 확률 변수의 확률 분포 비대칭성을 나타내는 지표
- 왜도의 값은 양수나 음수가 될 수 있으며 정의되지 않을 수도 있음
- 왜도가 음수일 경우에는 확률밀도함수의 왼쪽 부분에 긴 꼬리를 가지며 중앙값을 포함한 자료가 오른쪽에 더 많이 분포
- 왜도가 양수일 때는 확률밀도함수의 오른쪽 부분에 긴 꼬리를 가지며 자료가 왼쪽에 더 많이 분포
- 평균과 중앙값이 같으면 왜도는 0
첨도(kurtosis)
- 확률분포의 뾰족한 정도를 나타내는 척도
- 관측치들이 어느 정도 집중적으로 중심에 몰려 있는가를 측정할 때 사용
- pandas에서는 첨도 정의에 피셔의 정의 사용
- 첨도값(K)이 0에 가까우면 산포도가 정규분포에 가까움
- 0보다 작을 경우에는(K<0) 산포는 정규분포보다 더 뾰족한 분포(꼬리가 얇은 분포)
- 첨도값이 0보다 큰 양수이면(K>0) 정규분포보다 더 완만한 납작한 분포(꼬리가 두꺼운 분포)
변수를 전부 다 포함할 시에 스케일 값이 서로 달라서 파악하기 힘듦. 그래서 서브플롯으로 개별 변수 별로 시각화함
스케일링 : 변수들의 범위 혹은 분포를 같게 만드는 작업
-
standard scaling(Standardization. 표준화) : (관측치 - 평균) / 표준편차
- 특성들의 평균을 0, 편차를 1로 스케일링
- Z-Score 활용
- 모집단이 정규분포(가우시안 분포)를 따를 때 사용
- 가우시안 분포를 따르는지 검정해야 함
-
min-max scaling(normalization. 정규화) : (관측치 - 최소값) / (최대값 - 최소값)
- 값을 0과 1사이로 축소시킴. 즉, 비율의 값을 가지게 되며 가장 작은 값은 0의 값을 가지고 가장 큰 값은 1의 값을 가짐
- min, max 활용
- 이상치에 취약함
-
robust scaling : (관측치 - 1분위수) / IQR
- 특성들의 중앙값을 0, IQR 값이 1이 되도록 스케일링
- 4분위수 활용
- 아웃라이어 영향 최소화
잔차 : 관측값과 회귀선(예측값)과의 오차
- regplot의 직선이 residplot의 0축으로 나타남
상관계수
- 상관 계수 값(r)은 X 와 Y 가 완전히 동일하면 +1, 전혀 다르면 0, 반대방향으로 완전히 동일하면 –1 을 가짐
np.triu()
: matrix를 상삼각행렬로 만드는 numpy math
np.ones_like(x)
: x와 크기만 같은 1로 이루어진 array를 생성
np.triu(np.ones_like(corr))
와 같은 식으로 사용해서 히트맵을 마스킹, 상삼각행렬만 시각화
- 자기자신과의 상관관계, 중복값을 지워서 가독성을 높이기 위해 대각행렬 기준으로 한쪽의 데이터들만 masking 기법을 통해 plot함
퀴즈 정리
lmplot : scatterplot과 regplot을 함께 표현해볼 수 있는 그래프로 범주형 변수에 따라 다른 색상과 서브플롯으로 그려볼 수 있는 시각화 기능을 제공
- 회귀선과 함께 scatterplot 의 서브플롯을 그려볼 수 있음
- hue 옵션이 있어 색상을 통해 범주형 변수와 함께 표현할 수 있음
- 두 변수 X, Y가 만나는 지점을 표시함
relplot : 수치 데이터의 관계를 표현하기 위한 그래프를 서브플롯으로 그려주는 역할
- kind를 통해 scatter, line 을 지정해 시각화 할 수 있음
- hue는 색상을 의미하며 범주형 값에 따라 색상을 다르게 표현함