반응형

Python 411

파이썬 문자열 인덱싱, 슬라이싱 방법 총정리

python의 string 자료형에서 일부를 추출하는 인덱싱과 슬라이싱에 대하여 경우의 수를 총망라하여 이해하기 쉽게 정리해보도록 하겠습니다. 파이썬 문자열 인덱싱 방법 인덱싱은 문자열 전체에서 특정 위치에 해당하는 1글자만을 가져오는 과정을 의미합니다. 기본 인덱싱 방법 기본적으로 문자열[인덱스 위치 번호] 형태로 해당 위치의 글자를 가져오게 되는데 이 때 가장 앞 문자의 인덱스 번호는 0이 기준이 되는 점을 유의해주세요. 대표적인 문자열 인덱싱 예시는 아래와 같습니다. a = "0123456789" b = "hello world!" # a의 1번째, 6번째 글자 인덱싱 print(a[0]) # '0' print(a[5]) # '5' # b의 2번째, 7번째 글자 인덱싱(공백도 자리에 포함됨에 유의) ..

[Pandas] 파이썬 판다스 isin 함수 및 not isin 조건 사용 방법

Python pandas isin / not isin 파이썬의 판다스 라이브러리에서 특정 목록 중에 있는 값들을 조회하고 싶은 경우 유용하게 사용할 수 있는 함수인 isin과 isin 함수의 반대 조건에 대한 사용 방법을 정리해보도록 하겠습니다. 이해를 돕기 위해서 다음과 같은 간단한 데이터프레임 df를 예시로 들어 설명하겠습니다. import pandas as pd a = {"반" : [1, 1, 2, 2, 3, 3], "이름" : ["가", "나", "다", "라", "마", "바"], "학점" : ["A", "B", "B", "C", "A", "D"]} df = pd.DataFrame(a) df isin 함수 사용법 isin 함수는 df[열 이름].isin(목록 리스트) 형태로 사용해주시면 됩니다...

Python/Pandas 2022.09.18

[Sklearn] 파이썬 ROC 커브, AUC 면적 구하기 예제

Python scikit-learn ROC curve, AUC 파이썬에서 사이킷런을 활용하여 이진 분류 문제의 ROC 커브를 그려보고 AUC 값을 구해보는 방법을 간단한 예제를 통해 알아보도록 하겠습니다. 데이터셋 로드 및 전처리 이번 예제에서는 사이킷런에서 제공하는 기본 데이터셋인 breast cancer 분류 데이터셋을 활용해보겠습니다. 먼저, 아래의 코드로 target class에 대한 정보(0 또는 1이며, 악성/양성 종양 여부 의미)를 포함한 데이터셋을 데이터프레임 형태로 불러오겠습니다. import pandas as pd from sklearn import datasets # 유방암 데이터셋 로드 data = datasets.load_breast_cancer() df = pd.DataFrame..

Python/Sklearn 2022.09.16

파이썬에서 다른 py 파일의 변수 값을 가져오는 방법

파이썬에서 다른 파일에서 선언했던 변수를 그대로 호출하고 싶은 경우가 있습니다. 결론부터 말하면, 변수도 함수나 클래스를 가져올 때처럼 import 혹은 from ~ import로 똑같이 가져올 수 있습니다. 예시를 하나 들어서 이해를 도와드려보도록 하겠습니다. 아래와 같은 my_file.py 파일이 있다고 가정해보겠습니다. a = 3 b = 5 c = a + b a -= 3 최종 실행 결과는 a = 0, b = 5, c = 8이 저장되어 있음을 참고해주세요. import로 다른 파일 변수 참조 먼저, import 형태로 해당 py 파일을 모듈로 가져와 보겠습니다. 모듈 호출 후, 모듈명.변수명 형태로 변수들을 가져올 수 있습니다. import my_file # my_file.py 내의 변수들 참조 ne..

[Pytorch] 파이토치 과적합 방지(Early Stopping) 구현 방법 정리

파이토치 학습 과정에서 각 epoch가 끝나는 시점에서 validation loss 혹은 validation accuracy 등의 성능 지표를 측정하여 과적합이 의심되는 특정 시점을 넘어가는 경우 조기에 학습을 종료하는 early stopping 기능을 구현하는 방법들을 정리해보도록 하겠습니다. 1. 직접 구현 각 epoch가 끝나는 시점마다 evaluation을 진행 후, 성능 개선 여부를 감시하는 식의 코드를 간단하게 구현해볼 수 있습니다. 예시 pseudo-code의 형태는 다음과 같습니다. best_loss = 10 ** 9 # 매우 큰 값으로 초기값 가정 patience_limit = 3 # 몇 번의 epoch까지 지켜볼지를 결정 patience_check = 0 # 현재 몇 epoch 연속으로..

Python/Pytorch 2022.09.08

CLS 토큰이란? / 파이썬 BERT CLS 임베딩 벡터 추출 예제

[CLS] 토큰이란? BERT, RoBERTa 등의 언어 모델에서 문장 토큰들이 인코딩된 결과를 활용하는 것이 유용한 경우가 많은데 가장 첫 위치에 문장 공통 토큰인 [CLS]를 두어 해당 위치의 임베딩 결과를 대표 임베딩으로 주로 사용하게 되었습니다. BERT-base 크기의 모델의 경우 토큰 길이는 512이고 각 토큰 위치에서의 임베딩 결과는 768 차원 벡터로, 문장 input 1개에 대한 총 output 텐서의 shape는 512 * 768이 됩니다. 이 중 가장 앞 위치의 768 차원 벡터를 가져와 해당 문장의 대표 임베딩 결과로 활용하는 것이고, 흔히 NLP 관련 논문에서 CLS 토큰 임베딩으로 일컫는 것이 바로 이것입니다. CLS 임베딩 벡터 추출 코드 예제 먼저, BERT-base 모델을 ..

Python/NLP Code 2022.09.03

[Tensorflow] TFDV 활용 파이썬 데이터 EDA 실습 예제

Python EDA by tensorflow_data_validation 오늘은 파이썬 텐서플로우에서 제공하는 TFDV 모듈을 활용하여 데이터에 대한 EDA 과정을 유용하게 진행하는 방법에 대하여 간략하게 정리해보겠습니다. 데이터셋 로드 이번 실습에서는 예시로 타이타닉 데이터셋에 대하여 EDA를 진행해보겠습니다. 아래의 코드로 해당 데이터프레임을 바로 불러올 수 있습니다. import seaborn as sns import pandas as pd df = sns.load_dataset('titanic') df TFDV 모듈 설치 이번 글에서는 tensorflow_data_validation(TFDV)를 활용하여 EDA를 진행하는 방법을 살펴볼 것이기에 해당 모듈이 설치되지 않았다면 설치가 필요합니다. 아..

Python/Tensorflow 2022.08.30

[Sklearn] 파이썬 단어 개수 세기 예제 : CountVectorizer 함수

Python scikit-learn word count method 파이썬의 사이킷런 모듈을 활용하여 단어의 개수를 손쉽게 셀 수 있는 CountVectorizer 메소드에 관하여 사용 예제를 간략하게 정리해보도록 하겠습니다. 우선, 아래와 같은 문서들의 리스트가 있다고 가정하고 문서별로 단어 개수를 세보겠습니다. d1 = '바나나 사과 딸기 딸기 참외' d2 = '수박 바나나 딸기 바나나 딸기' d3 = '딸기 수박 참외 사과 사과 수박' d4 = '사과 사과 사과 사과 참외 참외' corpus = [d1, d2, d3, d4] 단어 개수 세기 기본 예시 CountVectorizer를 사용하여 단어 개수 벡터화를 진행해 보겠습니다. 기본 값으로 사용 시 공백 기준으로 단어를 나눠 개수를 카운팅하게 되며..

Python/Sklearn 2022.08.29

RuntimeError: The expanded size of the tensor (1002) must match the existing size (512) at non-singleton dimension 1. Target sizes: [8, 1002]. Tensor sizes: [1, 512] 해결

Transformers token size error debugging transformers 모듈로 모델 학습 과정 중 너무 긴 토큰 사이즈로 인해 발생가능한 에러를 고치는 방법에 대하여 간략하게 다루어보도록 하겠습니다. 오류 원인 trainer로 bert 모델을 학습하는 과정 도중 학습이 잘 진행되다가 중간에 특정 데이터에 도달했을 때, 다음과 같은 오류 메시지가 발생하였습니다. (batch size = 8이었으며, batch 내 문제가 되는 데이터가 포함된 것으로 보입니다.) trainer.train() # RuntimeError: The expanded size of the tensor (1002) must match the existing size (512) at non-singleton dim..

Python/Debugging 2022.08.26

[Matplotlib] 파이썬 산점도 텍스트 label 추가 방법

Python scatter plot 라벨 추가하기 예제 파이썬의 matplotlib(plt) 모듈로 산점도를 그린 뒤, 산점도의 각 점에 텍스트 레이블을 추가하는 방법을 간략하게 정리해 보겠습니다. 예시로, 다음과 같은 데이터프레임 df 정보에 대하여 산점도를 그려보겠습니다. import pandas as pd a = {'이름' : ['AA', 'BB', 'CC', 'DD', 'EE', 'FF'], 'x' : [0.7, 0.4, 1.2, 0.5, 1.3, 0.8], 'y' : [0.6, 1.0, 1.1, 0.5, 0.3, 0.9]} df = pd.DataFrame(a) df 우선, 각 행의 x 및 y 값을 기준으로 산점도를 그려본 결과는 아래와 같습니다. import matplotlib.pyplot as..

Python/Matplotlib 2022.08.24
반응형