반응형

Python 411

[Numpy] 넘파이 배열 행/열 추가 방법 정리(끝 위치, 중간 위치)

파이썬 numpy array row/column 삽입 방법 파이썬에서 넘파이 배열의 끝 위치 혹은 중간의 특정 위치에 원하는 값들의 행 및 열을 추가하는 방법들을 정리해보도록 하겠습니다. 우선, 아래와 같은 2차원 배열 arr를 가정하고 행 및 열을 다양하게 추가해 보겠습니다. import numpy as np arr = np.arange(12).reshape(4, 3) arr # 출력 결과 array([[ 0, 1, 2], [ 3, 4, 5], [ 6, 7, 8], [ 9, 10, 11]]) 1. 끝 위치 행/열 추가 : np.r_, np.c_ np.r_[기존 배열, 행 방향으로 추가할 배열] 형태로는 행 추가를, np.c_[기존 배열, 열 방향으로 추가할 배열] 형태로는 열 추가를 진행할 수 있습니다..

Python/Numpy 2022.12.13

[Numpy] 레코드 배열 recarray 자료형 선언 및 사용 방법

파이썬 넘파이 recarray type 파이썬의 numpy 모듈에서 제공하는 자료형인 레코드 배열(recarray)의 선언 방법을 위주로 사용 방법을 간략하게 정리해보도록 하겠습니다. 참고로, 레코드 배열에서는 arr['x'] = [1, 3] 처럼 attributes로 해당되는 부분 배열을 가져오는 기능을 제공합니다. (이는 마치 판다스에서 열을 추출하는 원리와 비슷합니다.) 해당 글은 아래 링크의 넘파이 공식 문서를 참고하여 작성되었으며, 더 자세한 내용이 궁금하시다면 해당 글을 참고해주세요. numpy.recarray — NumPy v1.23 Manual A list containing the data-types for the different columns, e.g. ['i4', 'f8', 'i4'..

Python/Numpy 2022.12.09

파이썬 SMOTE 알고리즘 데이터 불균형 해결 예제

Python SMOTE 사용법 파이썬에서 비대칭 데이터 라벨 문제를 해결하는 알고리즘 중 하나인 SMOTE를 사용해보는 예제를 간단하게 다루어보도록 하겠습니다. SMOTE 알고리즘이란? SMOTE는 데이터 불균형 해결 방법 중 적은 수의 라벨 측에 포함된 데이터 샘플 수를 늘리는 대표적인 오버 샘플링 기법 중 하나로, 샘플링된 데이터에 대하여 k-최근접 이웃을 고른 뒤, 해당 점과 이웃 점들을 선분으로 잇고 이 선분들 위에서 임의의 점을 골라 새로운 샘플로 취급하는 알고리즘입니다. SMOTE 파이썬 코드 예제 먼저, 예시 데이터로 사이킷런의 유방암 예측 데이터셋을 불러오도록 하겠습니다. 편의상, 수많은 종류 중 4가지 feature만 골라서 사용하겠습니다. import pandas as pd from s..

Python/Sklearn 2022.12.05

[Tensorflow] 파이썬 keras 특정 layer freeze 방법

텐서플로우 케라스 layer weight freezing 파이썬의 텐서플로우 케라스에서 모델 내의 특정 layer의 가중치를 학습 시에 freeze하는 방법에 대하여 살펴보겠습니다. 먼저, 다음과 같이 Dense layer 3개로 구성된 간단한 모델 구조를 가정해보겠습니다. (각 layer의 이름은 fc1, fc2, fc3로 설정하였습니다.) from keras.models import Sequential from keras.layers import Dense model = Sequential() layer1 = Dense(3, activation='relu', name = 'fc1', input_shape = (4,)) layer2 = Dense(2, activation='relu', name = 'f..

Python/Tensorflow 2022.12.02

[Pytorch] 파이토치 가중치 초기화 방법(Xavier, He)

Python torch Weight Initialization 파이토치에서 Xavier, He 등의 가중치 초기화를 각 layer 별로 혹은 모델 전체에 대하여 진행하는 방법을 간략하게 요약해보도록 하겠습니다. 우선, 다음과 같이 fc1, fc2, fc3의 3개의 layer를 가진 간단한 모델 구조를 가정해 보겠습니다. import torch import torch.nn as nn class Net(nn.Module): def __init__(self): super(Net, self).__init__() self.fc1 = nn.Linear(8, 4) self.fc2 = nn.Linear(4, 2) self.fc3 = nn.Linear(2, 1) def forward(self, x): return sel..

Python/Pytorch 2022.11.30

파이썬에서 yaml 파일을 읽고 쓰는 방법

Python yaml 불러오기, 내보내기 자주 사용되는 데이터 저장 포맷 양식 중 하나인 yaml 파일을 파이썬에서 읽고 쓰는 방법을 간단히 요약해보도록 하겠습니다. yaml 파일 읽기 아래와 같은 내용의 example.yaml 파일이 저장되어 있다고 가정하여 해당 파일을 불러오는 예제를 다루어 보겠습니다. name, age, skills, hobby의 4가지 카테고리에 대한 정보가 담겨있으며, skills는 딕셔너리, hobby는 리스트와 유사한 형태로 정보를 포함한 예시입니다. 위의 yaml 파일을 파싱하기 위한 과정은 다음과 같습니다. 1. 파일을 파싱하기 위하여 먼저 yaml 모듈을 임포트해줍니다. # 미설치 시 !pip install pyyaml 명령어로 설치 import yaml 2. open..

Python/Utils 2022.11.27

[Scipy] 파이썬 희소 행렬 변환(CSR, COO, DOK), 배열 역변환, 연산 방법 정리

Python Sparse Matrix 파이썬에서 0의 비중이 높은 행렬인 희소 행렬을 효율성을 위하여 3가지 대표 방법인 CSR, COO, DOK 방법으로 변환할 수 있는 Scipy의 기능을 살펴보고 배열 역변환 및 연산에 관한 예제도 같이 정리해보도록 하겠습니다. 희소 행렬 변환 방법(CSR, COO, DOK) 먼저, CSR, COO, DOK의 3가지 희소 행렬 표현 방법에 대해서 간략하게 설명하겠습니다. CSR : 각 row별로 0이 아닌 개수의 누적합을 이용해서 어느 행에 속하는지를 추적하고, 인덱스 번호(열의 위치)는 따로 저장하여 각 데이터가 저장된 위치를 찾는 방식입니다. 참고로, CSR은 연산이 빠르다는 장점 덕분에 많이 사용되는 방식입니다. COO : 0이 아닌 데이터가 저장된 위치의 ro..

Python/Scipy 2022.11.24

[Pytorch] 파이토치 Conv1d, Conv2d 원리 비교

Python torch Conv1d vs Conv2d 파이썬 파이토치에서 convolution을 수행하는 layer 종류인 Conv1d, Conv2d에 대하여 두 종류의 원리와 사용법 차이를 비교해보도록 하겠습니다. Conv1d 예제 및 원리 Conv1d는 1차원 벡터 여러개에 대하여 한 방향으로 움직이며 컨볼루션 합을 진행하는 layer로 대표적인 예시로 자연어 처리에서의 단어 토큰 임베딩의 컨볼루션을 들 수 있습니다. 이해를 돕기 위하여 아래의 상황을 가정한 예시를 그림으로 나타내보겠습니다. sequence length = 5(한 문장은 5개의 단어 토큰으로 구성됩니다.) input dimension = 7(각 토큰을 7차원 임베딩으로 표현합니다.) kernel size = 2(이웃한 2개 토큰의 임..

Python/Pytorch 2022.11.22

[Pytorch] 파이토치 RNN 계열 layer 원리 이해해보기

Python torch RNN, LSTM, GRU 사용법 파이썬 파이토치에서 RNN 계열 layer들의 input, output 형태를 기준으로 layer 개수 및 양방향 여부에 따른 원리를 이해하기 쉽게 설명해보도록 하겠습니다. 1. 기본 RNN, 단층, 단방향 먼저, 가장 기본적인 경우로 일반 RNN이며 single layer, unidirectional인 경우의 예제를 살펴보도록 하겠습니다. 상황은 다음과 같이 가정하겠습니다. sequence length = 2,(아래 그림에서 빨간색, 분홍색 순서입니다.) batch size = 4, input dimension = 5,(각 데이터는 5차원이며, 각 숫자는 x로 표시했습니다.) output dimension = 3 이 경우에 input의 최종 sh..

Python/Pytorch 2022.11.20

파이썬 변수/함수 타입 명시 방법(Type Hints)

Python Type Hints 파이썬에서 코드 작성 시에 변수 및 함수 input/output 자료형에 대해 알림 기능을 해줄 수 있는 Type Hints 기능에 대하여 살펴보도록 하겠습니다. 변수 선언 시 타입 명시 방법 파이썬에서는 변수의 자료형에 제한이 없어 기존의 방법대로 변수를 선언할 경우 아래처럼 기존 자료형과 다른 타입의 값을 넣는 것에 제약이 없습니다. a = "abcde" # 문자열로 선언된 변수 a a = 400 # 정수형 등 다른 자료형의 값을 할당하는 것에 제약이 없음 만일 문자열로 선언된 변수에 대하여 문자열이 아닌 다른 타입의 값으로 재할당될 경우 경고 메시지를 주고 싶다면 아래와 같이 Type Hints 방법을 적용할 수 있습니다. # 변수명: 자료형 = 값 a: str = ..

반응형