분석 Python(344)
-
Poetry) poetry를 사용하여 외부/내부 repository의 의존성을 고려하여 패키지 목록 관리 및 다운로드 하기
패키지 개발을 할 때 잘 안 되는 점 중에서 하나는 다른 환경에서 동일하게 설치할 경우 설치가 잘 안 되는 경우가 있다.항상 패키지를 설치하다보면 내 환경에서는 되지만 다른 사람에게 해당하는 경우를 전달해도, 다른 의존성으로 인해 설치가 안 되는 경우를 자주 경험했다. 그리고 내부 레포지토리가 있고 외부 레포지토리 2개가 있을 경우에도 우선적으로는 내부 레포지토리를 기반으로 의존성이 나오면 좋겠으면 고민했다가 해당 방식으로 하면 괜찮을 것 같아서 공유한다. 괜찮을 것 같다고 한 것은 실제로 테스트를 많이 해보지 않아서 다른 사람들에게는 안될 수 있기 때문이다.개선 사항이 있다면 댓글에 남겨주시면 반영해보겠다! 참고로 필자는 poetry를 많이 사용하지 않아서 다른 디테일한 설정을 잘 몰라서... 알려주시..
2024.06.22 -
Tabular) 좋은 피처 만드는 전처리 방법 정리해보기 (preprocessing)
정형 데이터를 딥러닝에 사용할 때 임베딩하는 방법에 대해서 정리해보고자 한다. 흔히 아는 머신러닝과 딥러닝의 차이를 이런 식으로 표현한다. (물론 딥러닝은 머신러닝의 부분집합이긴 해서 이렇게 구분하는 게 맞지는 않기는 한 것 같다) 여기서 말하는 머신 러닝은 흔히 이야기하는 tree 계열 알고리즘이나 회귀분석 같은 통계 기반의 방법론들을 생각해 주면 될 것 같다. 정형데이터 AI 모델 개발 방식 말하고자 하는 것은 흔히 딥러닝을 써서 얻을 수 있는 기대효과는 알아서 데이터에 대한 정보를 추출(feature extraction)할 수 있다는 믿음하에 딥러닝 방법론을 많이 사용하게 된다. 정형데이터 AI 모델 개발 방식 트렌드 크게 현재 데이터로 많이 사용하는 것이 tabular, image, text, g..
2023.10.04 -
TimeSeries) [MultiHead Self Attention] multi target 예측
새로운 모델 구조 만들어보기 해당 시도는 Multi Head Self Attention을 이용하면, 각 Head 마다 고유한 특징을 잡는 것을 이용하여 예측하는 코드와 분석을 통해서, gradient 실제로 다르게 가는 지를 확인하고자 함. Load Library import numpy as np import torch import matplotlib.pyplot as plt import torch.optim as optim from IPython.display import clear_output 데이터 정의 이번 블로그에서는 타깃 3개를 예측하는 것을 정의해서 예측하고자 함. # 예제 데이터 생성 t = np.linspace(0, 100, 1000) # 0에서 100까지 1000개의 점 y1 = np...
2023.09.23 -
Pytorch) 모델 가중치 로드 시 테스트 (전체 모델에서 서브 모델 가중치만 가져오기)
상황 조금 더 일반화된 학습을 하기 위해 멀티 타겟에 대한 일반화된 모델을 만들고, 그 모델에서 부분적인 타겟에 대하서 추출할 때 가중치를 잘 가져오는 지에 대한 테스트를 수행해봄. 기대 효과 공유하는 네트워크(Shared Network)가 일반화되게 잘 학습이 되고, 부분적으로 학습시킬 때 좋은 인풋으로써의 기능을 할 수 있지 않을까 함. 방법 각 타겟에 대해서 Dict 으로 키로 관리하고, 나중에 load 시 strict=False를 하면, 알아서 파라미터가 매칭이 안되도 들어갈 것이다라는 생각으로 시작 엄밀하게 제거하는 작업도 있지만, 제거하지 않아도 자동으로 맵핑되는 지 보고 싶었음 코드 중간에 가중치를 임의로 지정하여 테스트 굳이 forward까지 구현하지 않아도 되므로 패스하고 진행한다. im..
2023.09.15 -
Windows 10) Superset Install Guide (locally)
라이센스 Apache 2.0 패키지 버전 : 2.1.0 python : 3.8, 3.9, 3.10, 3.11 windows 10에서 superset을 아직 지원하지 않기 때문에 도커를 사용해야 한다. 그래서 이 글에서는 windows 10에서 docker를 이용해서 설치하는 것을 해보려고 한다. 일단 docker desktop on windows를 먼저 설치해 보자 Install Docker Desktop on Windows 이 글의 목적은 superset 설치를 하는 것이기 때문에 docker desktop은 아래 문서를 참조해서 설치해 주시기 바란다. https://docs.docker.com/desktop/install/windows-install/ Install Docker Desktop on W..
2023.08.21 -
Python) AVLTree Search를 통해서 특정 값의 범위 찾기 (ChatGPT와 함께)
FastAVLTree는 AVL 트리 데이터 구조의 구현을 제공하는 파이썬 라이브러리입니다. AVL 트리는 자체 균형 이진 검색 트리의 일종으로, Georgy Adelson-Velsky와 Evgenii Landis에 의해 1962년 처음 소개되었으며, 이들의 이름을 따서 명명되었습니다. AVL 트리는 모든 노드의 왼쪽과 오른쪽 서브트리의 높이 차가 최대 하나 이하인 이진 검색 트리입니다. 이는 트리가 항상 균형을 유지하므로 트리의 높이가 노드 수에 대해 로그 적이라는 것을 보장합니다. 이 속성은 AVL 트리가 검색, 삽입 및 삭제 작업을 빠르게 수행할 수 있도록 보장하며, 최악의 경우 시간 복잡도는 노드 수에 대해 O(log n)입니다. FastAVLTree는 Python에서 AVL 트리의 빠르고 메모리 ..
2023.03.22 -
git) submodule 다루기
submodule 추가하기 git submodule 추가하기 git submodule add 확인하기 cat .gitmodules 추가한 내용 반영하기 git commit -m "add submodule" git push # git push origin main # git push origin master 서브모듈을 최신 버전으로 업데이트 submodule 최신으로 업데이트하기 git submodule foreach git pull origin main submodule 안에 submodule이 없는 경우 git submodule update --remote submodule 안에 submodule이 있는 경우 git submodule update --remote --recursive 서브모듈이 있는 g..
2023.02.15 -
python) metaflow 파이썬 스크립트에서 실행해보기
metaflow를 이용해서 python script를 실행하는 방법에 대해서 공유 subprocess를 실행하고, 대기 상태를 건 다음에 다음 flow를 실행하게 해 봤다. import subprocess import time print("first") p = subprocess.Popen(['python', './metaflow/tutorials/02-statistics/stats.py','run']) while p.poll() is None: print('.', end='', flush=True) time.sleep(1) print('returncode', p.returncode) print("second") p = subprocess.Popen(['python', './metaflow/tutoria..
2023.02.10 -
Python) multiprocessing 코어 수 제한해서 돌리기
이 글의 목적은 병렬코드를 작성할 때 자기에게 주어진 코어가 제한되어 있는 경우에 대한 팁이 담겨 있는 글이다. 팁을 적기 전에 언제 병렬코드가 필요하고, 또 언제 코어 수를 제한해야 하는 지 생각해 보자. 작업을 하다 보면, loop를 쓰는 경우가 많고, task마다 다르겠지만, 각각의 job은 서로 관련이 없는 경우를 푸는 경우가 있다. 이럴 때 가장 쉽게 생각할 수 있는 것은 병렬로 코드를 짜는 것을 생각한다. 아래 그림처럼 100,000개를 처리할 때 각각의 record끼리 관계가 없다고 하면, 해당 작업을 끝내는 동안 계속 기다려야 한다. 바쁜 우리들은 할 게 많기 때문에 이 시간을 줄이고 싶다는 생각을 하게 되고, 결국 Multi-Processing을 사용하려고 검색을 하게 된다. 아래 그림처..
2023.02.04 -
Python) pyarrow 사용 방법
2022.11.26 - [분석 Python/구현 및 자료] - Python) pyarrow 다뤄보기 2022.12.21 - [분석 Python/구현 및 자료] - Python) pyarrow 사용 방법 라이브러리 import numpy as np import pyarrow.parquet as pq import pandas as pd from sklearn.datasets import make_classification 데이터 생성 X_pd= pd.DataFrame(X,columns =[ f"feature_{i}" for i in range(X.shape[1])]) X_pd['class'] =y 파티션별로 저장 X_pd.to_parquet( path="./test.parquet", engine='pyarr..
2022.12.21 -
Python) pyarrow 다뤄보기
2022.11.26 - [분석 Python/구현 및 자료] - Python) pyarrow 다뤄보기 2022.12.21 - [분석 Python/구현 및 자료] - Python) pyarrow 사용 방법 Apache Arrow란? (https://realsalmon.tistory.com/21) 직렬화(Serialization)란? (https://realsalmon.tistory.com/21) Zero-Copy 직렬화 Pyarrow란? 아파치 애로우(Apache Arrow)라는 메모리 내 분석을 위한 개발 플랫폼인데, 빅데이터를 빠르게 처리하고 이동할 수 있도록 하는 일련의 기술을 제공하는 라이브러리를 파이썬 PyArrow를 통해 구현할 수 있다. 기존의 pandas로 용량이 큰 csv파일을 로드하면 시간..
2022.11.26 -
(진행중) SHAP (Shapley Additive exPlanations) 이해하기
SHAP에 대해서 좀 더 이해를 해보고자 블로그를 참고하는데, 블로그를 보고 정확히 이해하려니 매우 어렵지만 이해해보려고 한다... 게임 이론 게임이론이란 우리가 아는 게임을 말하는 것이 아닌 여러 주제가 서로 영향을 미치는 상황에서 서로가 어떤 의사결정이나 행동을 하는지에 대해 이론화한 것을 말한다. 즉, 의사결정자는 자신의 결정뿐 아니라 상대방의 결정이 무엇이 될 것인가에 대해서 관심을 가지게 될 수밖에 없고 이러한 상황의 문제를 다루는 의사결정학의 한 분야라고 한다. 게임 이론 분류 Shapley value 개념 및 예시 게임 이론의 개념을 기반으로 하며 예측에 대한 각 피처의 기여도를 계산하여 기계 학습 모델의 예측을 설명하는 데 사용할 수 있습니다. Shap Value에 대한 간단한 이야기를 해..
2022.11.21