전체 글

이것저것
python 메모

[datetime] int형 시간을 datetime으로 바꾸기

시간을 int형으로 생성하기 import time int_time = int(time.time()*1000) int_time >>>> 1701069339870 int형 시간을 datetime 모듈로 변환하기 import datetime int_time = 1701069339870 datetime_time = datetime.datetime.fromtimestamp(int_time / 1e3) datetime_time >>>> datetime.datetime(2023, 11, 27, 16, 15, 39, 870000)

python 메모

[pandas] 모든 셀에서 찾고자 하는 string이 있는 row 찾기

다음과 같은 dataframe이 있다고 하자. import pandas as pd import numpy as np df = pd.DataFrame( { 'Zodiac' : ['Libra','Capricorn','Scorpio','January','Scorpio', 'Capricorn','Capricorn', 'Taurus'], 'Month' : ['January', 'February', 'February', 'April', 'January', 'March', 'April', 'April'], 'values' : [23, 45,89, 91, "january", "february", "april", "january"] } ) df >>>> 이때 어떤 컬럼도 상관없이 단어 Jan을 포함하고 있는 row들을 ..

개발

[python] multiprocessing 사용법

파이썬으로 작업을 하다보면 multiprocessing을 사용할 일이 생기는데, 사용법과 주의할 점을 정리하고자 한다. 1. Multiprocessing 사용하기 1) Process, Queue 기본적인 형태는 Process를 선언하여 새로운 프로세스를 만들 때 실행할 function과 arguement들을 넘겨주는 방식이다. 그리고 Queue를 사용하여 프로세스끼리 데이터를 주고 받을 수 있다. 주의할 점은 새로운 프로세스를 실행할 때 넘겨줄 function과 arguement들은 fork가 가능한 객체들이어야 한다. 대부분은 문제 없지만 GPU 자원을 활용하는 모델이나 threading 기반으로 돌아가는 객체들은 안될 때가 있다. 아래 예제는 consumer & producer 프로세스를 생성한 예시..

개발

[tmux] tmux cheat sheet

세션 시작 tmux new -s mysession 세션 종료 tmux kill-session -t mysession 세션 리스트 tmux ls 세션 접속 tmux attach -t mysession 세션 화면 빠져나오기 ctrl+b 후 d [참고] https://www.redhat.com/sysadmin/introduction-tmux-linux#:~:text=To%20start%20using%20tmux%2C%20type,window%2C%20and%20attaches%20to%20it. https://tmuxcheatsheet.com/

개발

[Docker] Docker 용량 정리

Docker는 시스템 자원을 많이 잡아먹는다. 특히 디스크 용량이 많이 필요한데 이때 필요한 명령어들을 정리하고자 한다. 1. Docker 용량 확인 docker system df >>>> TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 15 8 273GB 233.9GB (85%) Containers 21 11 393.7GB 127.5GB (32%) Local Volumes 11 6 2.264GB 846.2MB (37%) Build Cache 1 0 0B 0B 2. Docker cache 정리 Docker를 사용하다 보면 필요없는 layer등이 많이 남는다. 이를 정리할 수 있는 방법은 다양하다(참고). # 1) build시 사용된 cache 제거 docker builder p..

개발

[웹개발] (2) Nginx로 Load Balancer + SSL 적용하기

간단한 웹 데모를 개발하면서 겪었던 과정을 정리하고자 한다. 전체적인 구조는 다음과 같으며 Load Balancer(A)와 Web Server(B)는 별도의 서버로 구성하였다. 그리고 SSL 인증서를 도입하고자 한다. SSL 인증서를 발급받아 Nginx에 적용하면 HTTPS로 서비스를 할 수 있다. 환경정보는 다음과 같다. Ubuntu 20.04 Python 3.8 FastAPI 0.100.1 1. 도메인 연결 SSL 인증을 도입하기 위해서는 반드시 도메인이 있어야 한다. 이 블로그를 참고해서 세팅해주자. 2. Let's Encrypt 인증서 설치 Ubuntu에 certbot을 설치하자. sudo apt install certbot sudo apt install python3-certbot-nginx 이..

개발

[웹개발] (1) Nginx로 Load Balancer 적용하기

간단한 웹 데모를 개발하면서 겪었던 과정을 정리하고자 한다. 전체적인 구조는 다음과 같으며 Load Balancer(A)와 Web Server(B)는 별도의 서버로 구성하였다. 환경정보는 다음과 같다. Ubuntu 20.04 Python 3.8 FastAPI 0.100.1 1. Web Server FastAPI로 Frontend, Middleware, Backend를 구현하였고 이 레포를 기반으로 편하게 만들었다. 2. Nginx Nginx는 2004년에 개발된 비동기 이벤트 기반의 경량화된 웹 서버 프로그램이다. 20년된 프로그램이지만 가벼워서 아직도 많이 쓰인다. (1) Nginx 설치 먼저 A서버에 Nginx를 설치하자. sudo apt update sudo apt install nginx 다음으로..

개발

[Miniconda] Ubuntu에 Miniconda 설치하기

1. Miniconda 다운로드 및 설치# 1. update ossudo apt update # 2. upgrade ossudo apt upgrade# 3. download Minicondacurl https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -o Miniconda3-latest-Linux-x86_64.sh# 4. install Minicondasudo chmod +x Miniconda3-latest-Linux-x86_64.shbash Miniconda3-latest-Linux-x86_64.sh# 5. export PATH# export PATH=$PATH:(Miniconda가 설치된 path)export PATH=$PA..

Reinforcement Learning

[RL] Policy Gradient(REINFORCE)

Policy Gradient 개념과 대표적인 알고리즘인 REINFORCE 내용을 정리하고자 한다. 1. 개념 (1) Monte Carlo methods Monte Carlo methods are a group of methods that samples randomly from a distribution to eventually localize to some solution. In the context of RL, we use monte carlo methods to estimate the reward by averaging the rewards over many episodes of interaction with the environment. (출처) (2) Policy Gradient methods P..

논문 및 개념 정리

Hold-out vs Cross-validation 차이

1. Hold-out Hold-out 방법은 데이터를 train, test set으로 나누고 train set에서 학습된 모델을 test set에서 성능을 평가하는 방식이다(held-out method라고도 함) 2. Cross-validation Cross-validation은 k-fold cross validation이라고도 하며, hold-out 방법을 k번 시행하되 매번 새로운 train/test set으로 진행하는 방식이다. 아래 그림에서 처럼 모든 데이터셋이 test set으로 사용될 때 까지 돌린다. * Hold-out vs Cross-validation Hold-out은 데이터셋이 매우 크고 시간이 없거나 PoC 컨셉으로 모델을 테스트해볼 때 유용하다. Cross-validation은 시간..

Fine애플
끄적끄적