본문 바로가기

전체 글523

[Pandas] 35. 데이터 구간 나누기 (feat. cut, qcut) 안녕하세요~ 꽁냥이에요. 데이터 분석을 하다 보면 데이터를 특정 칼럼값을 기준으로 구간을 나누어야 할 때가 있는데요. Pandas에서 제공하는 cut과 qcut을 이용하면 쉽게 구간을 나눌 수 있어요. 이번 포스팅에서는 Pandas에서 cut과 qcut 사용법을 알아보고 이를 응용하는 방법도 알아보려고 합니다. 데이터 구간 나누기 (feat. cut, qcut) 1) 데이터를 구간 길이에 따라 나누어 보자 : cut a. 기본 사용법 데이터를 구간 길이에 따라 나눌 때에는 cut을 사용합니다. cut 함수의 사용법은 다음과 같습니다. cut( array, bins, labels) cut 함수는 나누고자하는 숫자값을 포함하는 배열을 첫 번째 인자로 받습니다. bins는 나누고자 하는 방식인데 bins에 양.. 2023. 1. 17.
32. Gain Chart와 Lift Chart에 대해서 알아보자 with Python 이번 포스팅에서는 분류 모형의 성능을 시각적으로 알아보는 방법인 Gain Chart와 Lift Chart에 대해서 알아본다. 또한 파이썬(Python)을 이용하여 구현하는 방법도 알아보려고 한다. Gain Chart와 Lift Chart Gain Chart와 Lift Chart를 알아보기 전에 몇 가지 세팅을 하고 넘어가자. 먼저 데이터 $(x_i, y_i), i=1, \ldots, n$가 있다고 하자. 이때 $x_i \in \mathbb{R}^p$인 $p$ 차원 설명 변수 벡터이고 $y_i \in \{ 0, 1 \}$인 범주형 반응 변수이다. 또한 학습된 분류 모형 $f$는 $f : \mathbb{R}^p \rightarrow [0, 1]$인 함수이다. 이 함수는 주어진 $x\in \mathbb{R}^.. 2023. 1. 17.
[Scipy] 3. 관측된 (x, y, z) 데이터로부터 xy 평면에 격자형 좌표에 대한 z값을 보간법(Interpolation)으로 추정하기 (feat. griddata) 이번 포스팅에서는 주어진 $(x, y, z)$로부터 격자형 구조를 갖는 $(x', y')$에 대한 $z'$값을 보간법(Interpolation)으로 추정하는 방법에 대해서 알아본다. griddata를 이용한 보간법 추정 포스팅 제목이 뭔가 거창한데 아래 그림을 보면 쉽게 이해될 수 있다. 먼저 주어진 $(x, y, z)$에 대해서 $z$를 제외한 $(x, y)$가 아래 왼쪽 그림이다. 이때 오른쪽 그림에서 격자형 구조를 갖는 $(x', y')$은 빨간 점이다. 이때 빨간 점에 대응하는 $z'$값을 주어진 데이터 $(x, y, z)$를 보간법을 이용하여 추정하겠다는 것이다. 이때 주어진 $(x, y)$로 이루어진 Convex Hull(오른쪽 그림에서 초록 경계) 내에서 보간법 추정이 이루어진다. Conve.. 2023. 1. 15.
Openpyxl을 이용하여 엑셀(Excel) 셀 안에 이미지(Image) 삽입하기 파이썬(Python)을 이용하면 엑셀 파일에서 셀 안에 이미지를 삽입할 수 있다. Openpyxl을 사용하면 가능한데 이번 포스팅에서는 Openpyxl을 이용하여 엑셀(Excel) 셀 안에 이미지(Image)를 삽입하는 방법을 알아본다. 셀 안에 이미지(Image) 삽입하기 1) 한 개 이미지 삽입 우선 한 개 이미지 삽입하는 방법을 알아보자. 방법은 간단하다. 이미지를 삽입하고 이미지 픽셀을 엑셀(Excel)의 셀 사이즈 단위로 변환하여 그에 맞게 셀 폭과 높이를 변경하면 된다. 아래 코드는 하나의 이미지를 삽입하는 작업을 수행한다. 이때 이미지 사이즈는 픽셀 단위로 500X281이다. 여기서 핵심은 바로 get_col_width_row_height 함수인데 이 함수가 이미지 사이즈를 픽셀 단위에서 엑.. 2023. 1. 14.
파이썬(Python) 여러 패키지(Packages, 모듈) 한번에 설치하기 (feat. pip install -r requirements.txt) 파이썬(Python)에서는 여러 패키지(Packages, 모듈)를 한 번에 설치하는 할 수 있는 방법 제공하고 있다. 방식은 텍스트 문서에 설치할 모듈과 버전을 적은 다음 'pip install -r 텍스트파일' 명령을 터미널에서 실행하면 된다. 이때 텍스트 파일 이름은 보통 requirements.txt를 쓴다. 이번 포스팅에서는 설치할 패키지 목록을 뽑는 방법과 해당 목록을 한 번에 설치하는 방법을 알아본다. 여러 패키지(Packages, 모듈) 한번에 설치하기 (feat. pip install) 먼저 현재 가상환경에서 사용하고 있는 모듈은 다음과 같다. 이제 설치된 패키지 목록을 뽑아보자. 아래 명령어를 쳐주면 된다. pip freeze > requirements.txt 그러면 위 명령을 실행한 경.. 2023. 1. 13.
31. 지도 학습 모형 성능 지표에 대해서 알아보자 with Python 이번 포스팅에서는 지도 학습 알고리즘을 통해 만들어진 예측 모형의 성능을 평가하는 지표에 대해서 알아보려고 한다. 성능 지표는 크게 분류 모형과 회귀 모형에 대한 지표로 나눌 수 있다. 여기에서는 분류 모형에 대한 성능 지표로 정분류율(Accuracy), 정밀도(Precision), 민감도(Sensitivity 또는 재현율 Recall)와 특이도(Specificity) 그리고 F1-Score를 알아볼 것이다. 그리고 회귀 모형에 대한 지표는 결정계수(Coefficient of Determination 또는 R Square), 평균 제곱 오차(Mean Square Error : MSE) 그리고 평균 절대 오차(Mean Absolute Error : MAE)에 대해서 알아본다. 그리고 각 성능 지표를 파이썬.. 2023. 1. 13.
[Matplotlib] 등고선도(Contour Plot)을 그려보자 (feat. contour, contourf) 반갑습니다~ 꽁냥이입니다. 등고선도 또는 등치선도(Contour Plot)는 2차원 좌표계에서 같은 높이를 가지는 부분을 선으로 이어서 그린 것을 말합니다. 등고선도를 이용하면 좌표상의 높이(또는 z값)의 분포를 직관적으로 알 수 있는데요. 이번 포스팅에서는 Matplotlib을 이용하여 등고선도를 그리는 방법에 대해서 알아보겠습니다. 여기서는 격자형 데이터를 이용하여 등고선도를 그리는 기본 방법을 알아보고 좌우 상하 간격이 일정하지 않은 데이터(Irregular Data)에 대한 등고선도 그리고 외삽(Extrapolation)을 이용하여 데이터 바깥 영역까지 등고선도를 그릴 수 있는 방법을 알아보겠습니다. - 목차 - 1. 격자형 데이터 2. 간격이 일정하지 않은 데이터 3. 외삽(Extrapolati.. 2023. 1. 10.
[Matplotlib] Tip! add_patch와 PatchCollection 비교 안녕하세요~ 꽁냥이에요. Matplotlib에서는 Patch라는 개념이 있는데요. 이는 도형이라고 생각하면 됩니다. 이러한 Patch를 추가할 때에는 add_patch를 사용하는데요. 만약 수많은 Patch를 추가한다면 add_patch 보다는 PatchCollection으로 한데 모아서 한 번에 추가하는 게 속도가 더 빨라집니다. 이번 포스팅에서는 add_patch와 PatchCollection의 사용법과 여러 도형을 추가할 때 속도 측면에서 어떤지 비교 실험을 해보겠습니다. add_patch와 PatchCollection 비교 1) Patch가 하나인 경우 여기서는 Patch를 Rectangle(사각형)으로 한정하여 실험해보겠습니다. 먼저 필요한 모듈을 임포트 합니다. import matplotlib.. 2023. 1. 4.
[Matplotlib] Tip! 좌표축 Axes의 가로 세로 길이 Inche 단위로 알아보기 (feat. get_window_extent, dpi_scale_trans) 안녕하세요~ 꽁냥이에요. 오늘은 Matplotlib과 관련하여 간단한 팁을 소개합니다. 바로 Axes 가로 세로 길이를 Inche 단위로 알아보는 방법입니다. Axes 가로 세로 길이 비율 계산하기. 먼저 Axes는 네 개의 축으로 둘러싸인 영역을 말합니다. 이제 Axes의 가로 세로 길이를 Inche 단위로 알아봅시다. 먼저 선 그래프를 하나 그립니다. import matplotlib.pyplot as plt fig = plt.figure() fig.set_facecolor('white') ax = fig.add_subplot() ax.plot([1,2,3,4,5], [6,4,7,3,1]) plt.show() 이제 Axes의 가로 세로 길이를 인치(Inche) 단위로 뽑기 위한 코드입니다. 먼저 Fig.. 2023. 1. 3.
[Change Point Detection] 1. CUSUM(Cumulative Sum) 알고리즘에 대해서 알아보자 with Python 이번 포스팅에서는 Change Point Detection 알고리즘의 하나인 CUSUM(CUmulative SUM) 알고리즘에 대한 개념을 알아보고자 한다. 또한 파이썬(Python)으로 구현하는 과정과 예제를 통하여 알고리즘의 작동 원리를 살펴보고자 한다. - 목차 - 1. CUSUM 알고리즘 2. 파이썬(Python) 구현 3. 장단점 1. CUSUM 알고리즘 1) 문제 정의 CUSUM 알고리즘이 풀고자 하는 문제는 시계열 내에 급격한 변경점이 없다는 가설 $H_0$와 하나의 변경점이 있다는 가설 $H_a$을 세우고 $H_0$과 $H_a$ 중에 어떤 것을 선택해야 하는 문제가 있다. 이 문제만 해결되면 변경점은 자연스럽게 추정할 수 있다. 이를 구체적으로 살펴보자. 먼저 시계열 데이터 $X_t, t=.. 2023. 1. 2.

맨 위로