본문 바로가기

전체 글523

Matplotlib을 이용하여 이진 트리(Binary Tree) 시각화 해보기 반갑습니다~ 꽁냥이입니다. 이진 트리(Binary Tree)는 컴퓨터 자료구조에서 이진 탐색 트리(Binary Search Tree), 의사결정나무(Decision Tree)를 시각화할 때 많이 사용되는 데이터 구조입니다. 특히 이러한 이진 트리 구조는 그 자체로도 중요하지만 이를 시각화하는 것이 꽤나 어려워서 논문의 주제가 될 정도인데요. 이번 포스팅에서는 Matplotlib을 이용하여 이진 트리를 시각화해보는 방법을 알아보겠습니다. 사실 제가 소개하는 방법은 완벽하지 않고 효율적이지도 않지만 그래도 나름 잘 그려지는 것 같아서 공유해보려고 해요 ㅎㅎ. 여기서는 이진 트리와 Traverse In Order에 대한 기본적인 개념은 알고 있다고 가정합니다. 또한 부모 노드가 반드시 왼쪽, 오른쪽 자식 노드.. 2021. 7. 11.
10. 가지치기(Pruning)에 대해서 알아보자 with Python 의사결정나무는 그 자체로 해석이 쉽다는 장점과 모형을 나무 형태로 보여줄 수 있다는 장점 덕분에 많이 사용한다. 하지만 잘못하면 너무 깊은(사이즈가 큰) 나무가 생성되어 모형의 과적합(Overfitting)을 유발할 수 있다. 이때 가지치기(Post Pruning)를 통하여 과적합을 방지하는데 이번 포스팅에서는 이러한 가지치기(Post Pruning)에 대해서 알아보고자 한다. 여기서 다루는 내용은 다음과 같다. 1. Cost Complexity Pruning 2. Reduced Error Pruning 3. 구현하기(Implementation) 4. 데이터에 적용해보기 본 포스팅을 읽어보기 전에 의사결정나무에 대한 내용을 이전 포스팅에서 정리해두었으니 먼저 읽어보자. 또한 노드와 마디는 같은 뜻이니 상.. 2021. 7. 5.
[Pandas] 21. 칼럼에 특정 값을 채워 넣기(칼럼 수정하기) 오랜만이에요~ 요즘 회사일이 바빠서 오랜만에 포스팅하네요. 이번 포스팅에서는 Pandas 데이터프레임에서 특정 칼럼의 값을 다른 값으로 채워 넣는 방법을 알아보려고 합니다. 이 부분은 Null 또는 결측값을 다른 값으로 대체할 때, 칼럼 데이터를 수정할 때 많이 사용합니다. 여기서는 아래의 내용을 다루고자합니다. 1. 결측값을 다른 값으로 채워 넣기 2. 특정 값을 다른 값으로 채워 넣기 1. 결측값을 다른 값으로 채워 넣기 1) 결측값을 하나의 값으로 대체하기 먼저 데이터프레임에서 결측치를 대체하는 방법에 대해서는 여기에 자세히 포스팅해두었으니 참고하세요~ 여기서는 특정 칼럼의 결측치를 다른 값으로 채워 넣는 방법을 알아보려고 합니다. 먼저 이번 포스팅에서 사용할 데이터를 만들어 줍니다. import .. 2021. 7. 3.
[오류 해결] error tokenizing data. c error : expected 안녕하세요~ 꽁냥이에요. Pandas의 read_csv를 이용하여 텍스트 파일을 읽을 때가 있지요. 이때 분명 텍스트 파일을 열어보면 별문제 없어 보이는데 Pandas의 read_csv를 읽으면 아래와 같은 오류가 나타날 때가 있습니다. error tokenizing data. c error : expected ~~ 1. 오류원인 -라인별 구분자로 분리된 단어의 개수가 다르다- 이런 오류는 텍스트의 각 라인마다 구분자로 구분해놓았을 때 길이가 다르기 때문에 발생합니다. 예를 들어볼까요? 먼저 아래의 데이터를 다운받아주세요. pandas를 임포트하고 위 데이터에서 기본 구분자는 쉼표(,)이므로 따로 구분자를 지정하지 않고 read_csv를 통해 데이터를 읽어줍니다. 이때 아래와 같은 오류가 발생합니다. i.. 2021. 6. 25.
[Pandas] 20. Pandas Combine을 이용하여 데이터 업데이트/덮어쓰기 안녕하세요~ 꽁냥이에요. 데이터를 전처리할 때 기존 데이터를 다른 데이터로 업데이트해야 할 때가 있지요. 예를 들면 두 데이터가 있다고 했을 때 둘 중 작은 값으로 업데이트하는 것처럼요. Pandas에서는 combine을 사용하여 데이터를 업데이트할 수 있어요. 이번 포스팅에서는 combine 함수 사용법에 대해서 알아보려고 합니다. Combine 함수 사용법 1. 데이터 업데이트 먼저 Pandas를 임포트하고 데이터프레임 두 개를 만들어줍시다~ import pandas as pd df1 = pd.DataFrame({'A': [5, 0], 'B': [2, 4]}) df2 = pd.DataFrame({'A': [1, 1], 'B': [3, 3]}) 이제 combine 함수의 사용법은 다음과 같이 업데이트할.. 2021. 6. 16.
Matplotlib 메인 눈금(Major Tick) 서브 눈금(Minor Tick) 사용하기 안녕하세요~ 꽁냥이에요. 지난 포스팅에서는 tick_params 이용하여 눈금을 조절하는 방법에 대해서 알아보았습니다. 이번엔 지난 포스팅에서 다루지 않았지만 알아두면 유용한 팁을 알려드리려고 합니다. 데이터(특히 시계열 데이터)를 선 그래프로 표현할 때 x축 눈금 라벨이 길어서 겹침 현상이 발생할 때가 있습니다. 아래 그림처럼 말이죠. 이러한 문제를 해결하는 방법으로 x축 눈금 라벨을 회전하는 방법이 있습니다(x축 눈금 라벨을 회전하는 방법은 여기에 포스팅해두었습니다). 하지만 이러한 방법은 불필요하게 x축 눈금을 표시하게 될 수 있습니다. 왜냐하면 위 그림상에서 2018/01/01부터 2018/12/01의 시간 범위에서 2018년이라는 것이 중복되어 있기 때문입니다. 따라서 이러한 x축 눈금은 중간중.. 2021. 6. 14.
[오류 해결] Pandas - query 실행 오류 "TypeError: 'Series' objects are mutable, thus they cannot be hashed" 안녕하세요~ 꽁냥이에요. 데이터를 테이블 형태로 변환하거나 데이터를 전처리할 때, 그리고 데이터를 추출할 때 Pandas를 많이 사용하지요. 꽁냥이는 특히 데이터 추출할 때 query함수를 사용하는데요. 간혹 null 값, nan 값을 포함하는 행을 추출하려고 할 때 query 함수가 제대로 작동하지 않는 경우가 발생합니다. 한번 살펴볼까요? import pandas as pd import numpy as np data = { 'A':[1,2,3], 'B':[3,np.nan, np.nan] } df = pd.DataFrame(data) 위 데이터프레임에는 nan값이 포함되어 있습니다. 이제 B 열에서 nan을 포함하는 행을 추출해보겠습니다. df.query('B.isna()') 하지만 실행되지 않고 아래.. 2021. 6. 13.
[Matplotlib Tip] 2. numpy.histogram을 이용하여 히스토그램 그리기 안녕하세요~ 꽁냥이에요. 히스토그램을 그릴 때 각 범주별로 또는 각 그룹별로 히스토그램을 한 곳에 겹쳐 그려 야한 경우가 있습니다. 아래처럼 말이죠 위 그림에서 알 수 있듯이 초록색과 주황색 히스토그램이 겹쳐져 알아보기 어렵습니다. 이때 히스토그램의 겹침 현상을 완화하여 분포를 한눈에 보기 쉽게 하는 방법이 있는데요. numpy.histogram 함수를 사용하면 해결할 수 있습니다. Matplotlib을 이용하여 히스토그램을 그리는 방법은 아래와 같이 포스팅해두었으니 참고하시면 됩니다. [히스토그램(Histogram)] 1. Matplotlib을 이용하여 히스토그램 그리기. [히스토그램(Histogram)] 2. Matplotlib을 이용하여 히스토그램 여러 개 그리기. numpy.histogram을 이.. 2021. 6. 12.
9. 의사결정나무(Decision Tree) 에 대해서 알아보자 with Python 이번 포스팅에서는 모형의 해석이 쉽다는 장점을 가진 의사결정나무를 공부한 내용을 포스팅하려고 한다. 의사결정이 무엇인지 알아보고 의사결정나무 모형을 직접 구현하는 방법을 소개하고 마지막에 실제 데이터를 이용하여 앞서 만든 모형이 잘 동작하는지 확인해볼 것이다. 또한 sklearn을 이용하는 방법도 소개한다. 여기서 다루는 내용은 다음과 같다. 1. 의사결정나무란? 2. 의사결정나무 모형 만들기 3. 의사결정나무 구현하기 4. 예제 with Python 1. 의사결정나무란? - 정의 - 의사결정나무(Decision Tree)는 입력값에 대한 예측값을 나무 형태로 나타내어주는 모형이다. - 용어 정리 - 먼저 의사결정나무에서 사용되는 주요 용어를 살펴보자. 뿌리 마디(root node) : 시작되는 마디로 .. 2021. 6. 10.
[오류 해결] ExecutableNotFound: failed to execute ['dot', '-Kdot', '-Tsvg'], make sure the Graphviz executables are on your systems' PATH 안녕하세요~ 꽁냥이에요. 꽁냥이는 요즘 graphvis 사용법을 배우고 있는데요. pip install graphviz를 실행하여 설치만 하면 되는 줄 알았는데 아니더라고요. 저 같은 경우 아래 코드를 실행했는데 오류가 났어요. ㅠ.ㅠ dot = Digraph(comment='Test') dot.node('A') dot.node('B') dot.node('C') dot.edge('A','B') dot - 오류 내용 - ExecutableNotFound: failed to execute ['dot', '-Kdot', '-svg'], make sure the Graphviz executables are on your systems' PATH 구글에서 확인해보니 해당 오류는 graphviz 설치 파일을 받아서.. 2021. 6. 2.

맨 위로