파이썬 기초 학습
1. matplotlib를 활용한 시각화
matplotlib는 파이썬에서 가장 널리 사용되는 데이터 시각화 라이브러리입니다. 다양한 종류의图表를 생성할 수 있으며, 공식 샘플 갤러리에서 많은 예제를 확인할 수 있습니다.
2. 한글 폰트 설정
matplotlib에서 한글을 표시하려면 폰트 속성을 지정해야 합니다:
import matplotlib.font_manager as fm
import matplotlib.pyplot as plt
# 방법 1: 개별 요소에 폰트 지정
plt.title("라인 차트 고급 예제", fontproperties="malgun")
# 방법 2: 전역 설정 변경
plt.rcParams['font.family'] = 'Malgun'
plt.rcParams['axes.unicode_minus'] = False
3. 출력 메서드 활용
# 숫자를 연속으로 연결하여 출력
for a in range(3):
for b in range(3):
for c in range(3):
print(int(str(a) + str(b) + str(c)), end=' ')
4. 조건문 활용
# 최솟값 구하기 (한 줄 조건문)
smallest = x if x < y else y
# 여러 조건 연결
result = "A" if score >= 90 else "B" if score >= 80 else "C"
5. 부동소수점 비교
import math
# 직접 비교는 오차 발생
# 0.4 - 0.3 == 0.1 # False 반환
# 올바른 비교 방법
math.isclose(0.4 - 0.3, 0.1) # True 반환
math.isclose(0.1 + 0.2, 0.3, rel_tol=1e-9)
6. 범례(legend) 매개변수
# 기본 사용
plt.legend(loc='best')
# 상세 설정
plt.legend(loc="upper right", fontsize=8, borderaxespad=0.3, framealpha=0.5)
머신러닝 및 딥러닝 도구
7. 머신러닝 라이브러리
scikit-learn은 가장 популяр한 머신러닝 라이브러리로, 다양한 알고리즘을 제공한다.
8. SVM (서포트 벡터 머신)
주요 SVM 라이브러리:
- LibSVM: https://www.csie.ntu.edu.tw/~cjlin/libsvm/
- SVM-Light: http://svmlight.joachims.org/
- Liblinear: https://www.csie.ntu.edu.tw/~cjlin/liblinear/
딥러닝 프레임워크
- PaddlePaddle:百度에서 개발한 딥러닝 프레임워크
- GitHub: https://github.com/PaddlePaddle/Paddle
- 공식사이트: https://paddlepaddle.org
- Caffe: 이미지 처리に特化した 딥러닝 프레임워크
- GitHub: https://github.com/BVLC/caffe
- TensorFlow: Google에서 개발한 범용 딥러닝 프레임워크
- GitHub: https://github.com/tensorflow/tensorflow
- Keras: 파이썬 기반 고수준 딥러닝 API
- GitHub: https://github.com/fchollet/keras
강화학습 도구
PARL: PaddlePaddle 기반 강화학습 프레임워크
- GitHub: https://github.com/paddlepaddle/parl
- 지원 알고리즘: DQN, DDPG, PPO, A2C
개발 환경 설정
패키지 관리자 (pip)
# pip 업그레이드
python -m pip install --upgrade pip
# 패키지 설치
pip install numpy
pip install pandas
# 특정 버전 설치
pip install numpy==1.21.0
Conda 환경 관리
# 새 환경 생성
conda create --name myenv python=3.8
# 환경 목록 확인
conda info --envs
# 환경 활성화/비활성화
conda activate myenv
conda deactivate
# 환경 삭제
conda remove --name myenv --all
#清华大学 미러 설정
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes
# 패키지 설치/제거
conda install numpy
conda remove numpy
# 버전 검색
conda search --full-name pandas
# 설치된 패키지 목록
conda list
텍스트 처리 및 데이터 조작
jieba 라이브러리 (중국어 분절)
# 설치 방법
pip install jieba
# 사용 예제
import jieba
text = "我爱Python编程"
words = jieba.cut(text)
print("/ ".join(words))
# 형태소 분석
jieba.load_userdict("custom_dict.txt")
경로 처리
# Windows 경로 처리
image_path = r'D:\python\image.jpg'
# 또는 이스케이프 문자 사용
image_path = 'D:\\python\\image.jpg'
# os.path를 활용한 경로 조작
import os
full_path = os.path.join('D:', 'python', 'image.jpg')
순열과 조합
from itertools import combinations, permutations
characters = 'ABCD'
# 조합 (순서 무관)
for item in combinations(characters, 3):
print(''.join(item), end=' ')
print('\n' + '='*20 + '\n')
# 순열 (순서 중요)
for item in permutations(characters, 3):
print(''.join(item), end=' ')
파일 조작
import shutil
import os
# 파일 복사
shutil.copy('source.txt', 'destination.txt')
# 디렉토리 복사
shutil.copytree('src_dir', 'dst_dir')
# 파일 삭제
os.remove('file.txt')
# 디렉토리 삭제
shutil.rmtree('dir_name')
난수 생성
import random
# 시드 설정 (재현성 보장)
random.seed(42)
# 하나의 요소 무작위 선택
choice = random.choice(['A', 'B', 'C'])
# 여러 요소 비복원 추출
sample = random.sample(range(100), 10)
# 0~1 사이 실수 난수
float_val = random.random()
# 지정 범위 내 정수 난수
int_val = random.randrange(10)
고급 주제
이미지 증강 (Image Augmentation)
imgaug 라이브러리를 사용하여 데이터 증강을 수행할 수 있습니다:
# imgaug 설치
pip install imgaug
# 사용 예제
import imgaug.augmenters as iaa
seq = iaa.Sequential([
iaa.Fliplr(0.5),
iaa.Affine(rotate=(-15, 15)),
iaa.GaussianBlur(sigma=(0, 3))
])
# 이미지에 적용
images_aug = seq(images=images)
어텐션 매트릭스 시각화
- https://medium.com/datalogue/attention-in-keras-1892773a4f22
- https://github.com/zhaocq-nlp/Attention-Visualization
- https://github.com/Aurelius84/SPWE
Beam Search
자연어 처리에서 시퀀스 생성 시 사용되는 디코딩 전략으로, 각 단계에서 확률이 높은複数の 후보를 유지합니다.
NumPy 배열
# NumPy 설치
pip install numpy
# 배열 생성
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
matrix = np.array([[1, 2, 3], [4, 5, 6]])
# 기본 연산
print(arr * 2)
print(matrix.shape)
print(np.mean(arr))