프로그램을 작성하다 보면 다양한 예외 상황이 발생할 수 있다.이를 적절하게 처리하면 예기치 않은 프로그램 종료를 방지하고, 디버깅 및 유지보수를 용이하게 할 수 있다.이번 포스팅에서는 파이썬의 기본 예외 처리 방법과 함께 나만의 커스텀 예외 클래스를 정의하고 활용하는 방법을 살펴보자.1. 기본 예외 처리파이썬에서 try, except, else, finally 구문을 이용해 예외를 처리할 수 있다.try: 예외가 발생할 수 있는 코드를 작성except: 특정 예외가 발생했을 때 이를 처리하는 코드를 작성else: 예외가 발생하지 않았을 때 실행할 코드를 작성finally: 예외 발생 여부와 상관없이 항상 실행되는 코드를 작성def divide(a, b): try: result = a /..
파이썬의 데코레이터(decorator)는 기존 함수를 수정하지 않고도 추가적인 기능을 손쉽게 덧붙일 수 있는 강력한 도구이다.데코레이터의 기본 개념과 활용하는 법을 코드를 통해 알아보자.데코레이터란?데코레이터는 하나의 함수를 입력받아 새로운 함수를 반환하는 함수이다.이 방식을 통해 로깅, 실행 시간 측정, 캐싱 등 공통적인 기능을 여러 함수에 쉽게 적용할 수 있다.핵심 로직과 부가 기능을 분리하여 코드의 재사용성과 가독성을 높일 수 있다는 점이 큰 장점이다.데코레이터의 장점 및 필요성코드 재사용성 향상여러 함수에 동일한 기능을 중복 없이 적용할 수 있다.관심사의 분리주요 기능과 부가 기능(예: 인증, 로깅)을 분리하여 코드의 가독성 및 유지보수가 용이하다.유연한 기능 추가함수 실행 전후에 다양한 부가 작..
파이썬 matplotlib을 사용해서 서브플롯을 그리는 방법 두 가지를 살펴보자.1. 명시적이고 직관적인 방법명시적이고 직관적이므로 코드를 통해 살펴본다.import matplotlib.pyplot as pltimport numpy as np# 데이터 생성x = np.linspace(0, 10, 100)y1 = np.sin(x)y2 = np.cos(x)y3 = np.tan(x)y4 = x ** 0.5# Figure와 서브플롯 생성fig, axs = plt.subplots(2, 2, figsize=(10, 8)) # 2x2 서브플롯# 첫 번째 서브플롯axs[0, 0].plot(x, y1, color='blue')axs[0, 0].set_title('y = sin(x)')# 두 번째 서브플롯axs[0, 1..
고양이 이미지를 학습해서 새로운 고양이 이미지를 만들어주는 GAN을 제작해보자.만들기 전에 GAN에 대한 설명과 예시는 아래 링크를 참조하자.이 글에서 catGAN은 카테고리 GAN이 아니라 고양이 GAN이다.PyTorch로 GAN 구현하기PyTorch로 DCGAN 구현하기1. 데이터 준비Kaggle에서 데이터를 받아올 것이다.이 링크를 통해 이미지를 다운받거나 아래 명령어를 터미널에 복사해서 붙여 넣고 실행하자.curl -L -o ~/Downloads/archive.zip https://www.kaggle.com/api/v1/datasets/download/spandan2/cats-faces-64x64-for-generative-modelscURL을 사용하려 할 때, Kaggle API가 설정되어있지 ..
이전 포스팅에서 npy, npz 파일을 만들고 여는 법을 살펴봤다.이번 포스팅에서는 npz 파일의 키를 확인하는 법을 알아본다.npz 파일 key 확인하기files 속성을 사용하여 아래와 같은 코드로 키를 확인할 수 있다.import numpy as np# .npz 파일 열기data = np.load('파일이름.npz')# 키 확인하기keys = data.filesprint(keys)예제npz 파일을 열고 키를 확인한 다음 첫 번째 키에 해당하는 배열을 출력해보자.import numpy as np# .npz 파일 열기data = np.load('example.npz')# 키 확인하기keys = data.filesprint("Keys:", keys)# 첫 번째 키에 해당하는 배열 출력하기array = da..
파이썬에서 숫자를 출력할 때 콤마(,)를 사용하여 자동으로 천 단위마다 쉼표를 넣고 싶다면 format() 함수를 사용할 수 있다.예를 들어 1234567을 출력할 때 1,234,567과 같이 출력하고 싶다면 다음과 같이 코드를 작성할 수 있다.number = 1234567formatted_number = "{:,}".format(number)print(formatted_number) # 1,234,567 출력 f-string을 사용하여 출력할 수도 있다.사실 이 방법이 좀더 직관적이고 성능이 빠르다고 알려져 있다.number = 1234567formatted_number = f"{number:,}"print(formatted_number) # 1,234,567 출력 메모할 겸 포스팅 남긴다.
이전 포스팅에서 살펴본 것처럼 list comprehension은 기본적으로 for문을 사용하여 리스트를 생성한다.자세한 내용은 아래 글에 나와있다. [Python] List Comprehension의 이해와 예제파이썬의 list comprehension은 리스트를 생성하기 위한 강력하고 간결한 방법을 제공한다.기본적으로 for문을 사용하여 리스트를 한 줄로 생성할 수 있게 해준다.이제 list comprehension의 기본적인 구조dykm.tistory.com파이썬에서는 리스트를 생성하거나 처리할 때 for문을 사용하지 않고도 다양한 방법을 사용할 수 있다.이번 포스팅에서는 for문을 사용하지 않은 list comprehension에 대해 알아보자.1. map 함수map 함수를 사용하여 리스트의 각 ..
파이썬의 list comprehension은 리스트를 생성하기 위한 강력하고 간결한 방법을 제공한다.기본적으로 for문을 사용하여 리스트를 한 줄로 생성할 수 있게 해준다.이제 list comprehension의 기본적인 구조와 예제를 살펴보자.List Comprehension의 기본 구조List comprehension의 기본 구조는 다음과 같다.[표현식 for 항목 in iterable]이 구조에서 각 요소에 대한 설명은 아래와 같다.표현식: 각 항목에 적용되는 계산이나 값을 나타냄항목: iterable(반복 가능한 객체)에서 가져온 요소를 나타내는 변수iterable: 리스트, 튜플, 문자열 등 반복 가능한 객체이제 예제를 통해 list comprehension에 대해 알아보자.예제몇 가지 예제를 ..
.npy 및 ,npz 파일 형식.npynpy파일은 NumPy 어레이를 저장하기 위한 기본 파일 형식이다.바이너리 형식으로 저장되어 읽기와 쓰기가 빠르고 메타데이터를 포함, 어레이를 정확하게 복원할 수 있다..npznpz 파일은 여러 개의 npy 파일을 하나의 압축된 파일로 묶어 저장하는 형식이다.여러 개의 배율을 효율적으로 저장하고 불러올 수 있다..npy및 .npz 파일의 압축 및 해제 방법.npy 파일 저장 및 불러오기.npy 파일 저장import numpy as np# 데이터 생성array = np.arange(10)# NPY 파일로 저장np.save('array.npy', array).npy 파일 불러오기import numpy as np# NPY 파일에서 데이터 로드loaded_array = n..
데이터 전처리 (Data Preprocessing)데이터 전처리는 머신러닝 모델을 훈련하기 전에 데이터를 준비하는 과정이다.전처리를 거치지 않은 원시(raw) 데이터는 머신러닝 모델 학습에 적합한 형태로 되어 있지 않기 때문에 데이터 전처리 과정이 필요하다.이 과정은 데이터를 분석하고 정제하여 모델이 이해할 수 있는 형태로 변환하는 것을 포함한다.데이터마다 특성이 다르기 때문에 데이터 전처리 과정은 데이터마다 다르지만 보통 다음과 같은 과정을 따른다.데이터 수집 (Data Collection):프로젝트 목적에 맞는 데이터를 수집한다. 이는 주로 데이터베이스, 파일, API, 웹 크롤링 등을 통해 이루어진다.데이터의 양과 품질을 고려하여 데이터를 수집하고 필요한 경우 데이터를 정제한다.데이터 탐색 및 이해..