Python(215)
-
Python) Numba 예제 (TODO)
목차 예전 Numba 관련 글 https://data-newbie.tistory.com/390 EX) Montecarlo Method import random from numba import jit @jit(nopython=True) def monte_carlo_pi(nsamples): acc = 0 for i in range(nsamples): x = random.random() y = random.random() if (x ** 2 + y ** 2) < 1.0: acc += 1 return 4.0 * acc / nsamples def monte_carlo_pi_no_numba(nsamples): acc = 0 for i in range(nsamples): x = random.random() y = r..
2021.08.13 -
Python) 회귀 분석 기본 사용법 정리(scikit-learn, statsmodels)
파이썬에서 Linear Regression 하는 것에서 기본적인 것이 Scikit-Learn이 있는데, 통계분석을 같이 하고 싶다면 statsmodels 을 쓰는 것이 더 좋다. 그래서 오랜만에 쓸 기회가 있어서 사용하다가 정리를 해봤다. 목차 Library import statsmodels.api as sm import numpy as np import pandas as pd from sklearn.linear_model import LinearRegression 연속형 변수 data spector_data = sm.datasets.spector.load(as_pandas=True) df = spector_data.raw_data y_col = ["GRADE"] x_cols = ["GPA","TUCE"..
2021.08.11 -
Python) Yield 에 대해서 알아보기
yield에 대해서 생각보다 많이 쓰는 것 같은데, 너무 모르는 것 같아서 정리해보고자 합니다. yield는 주로 Generator에서 쓰이게 되며, Python Generator를 정의하는 핵심은 "yield" 키워드를 사용하는 것이라고 합니다. Python Generator는 대규모 collection이 필요한 시나리오 및 멀티 스레딩과 같은 기타 특정 시나리오 및 코드의 가독성을 향상하는 시나리오에서 널리 사용됩니다. 이 글에서 모든 것을 다룰 수는 없겠지만 기본적인 개념이나 고급 사용 방법에 대해서 적어보고자 합니다. 일단 generator를 알아보고자 합니다. 목차 Iterator란? 그 전에 알아야 하는 것은 Iterator입니다. Iterator란 반복 가능한 객체, 즉 반복문을 이용해서 데..
2021.08.07 -
or-tools) 제한 조건 만족하는 특정 인자에 대한 경우의 수 찾기
제한 조건을 이용해서, 솔루션이 아닌 제한 조건을 만족하는 범위를 찾고자 하는 문제를 풀고 싶었다. 해당 문제에서는 순차적 경우를 가정해서 문제를 풀기로 하였다. 아직 상상으로 해보는 것은 특정 인자가 결정이 되면, 다른 인자도 영향을 받기 때문에, 순차적으로 밖에 생각이 들지 않는다. 그래서 인자를 하나씩 찾아나가는 것을 진행해 봤다. 기본 제한 조건은 다음과 같이 진행했다. $ 0 \le x \le 100$ $ 0 \le y \le 100$ $ 0 \le z \le 100$ $ 0 \le 2*x+7*y+3*z \le 50$ $ 0 \le 3*x-5*y+7*z \le 45$ $ 0 \le 5*x+2*y-6*z \le 37$ 인자들의 연관성의 가정은 x->y->z로 가정을 하고, 한 개의 인자가 결정되거..
2021.08.01 -
Python) 파이썬 프로젝트를 패키지화하기(setup.py)
일반적으로 우리가 분석을 하다 보면, 다양한 함수나 클래스들을 정의하게 된다. 이럴 경우 가장 귀찮은 경우가 이러한 함수들을 매번 관리하는 것이나, 호출해오는데 많은 어려움이 있다. 아래와 같이 코드를 조직화한다고 해보자. src/ plot.py process.py notebooks/ exploration.ipynb 보통 자신의 만든 함수를 이용하려면 같은 디렉터리에 있어야 가능하지만, src에 있는 패키지를 사용하고 위해서는 아래와 같은 코드가 필요하다. 기본적으로 특정 환경에서 site-package에 있는 것을 라이브러리를 불러오는 방식으로 되어있기 때문에 src에 있는 것을 불러오기 위해서는 필요하다. import sys sys.path.append('../src') 그렇지만, 우리가 매번 작업을..
2021.07.27 -
Paper) PettingZoo (MARL Environment) 논문 읽어보기
일단 테스를 해봤을 때 잘 작동하는 것을 확인하였고, 궁금해서 더 찾아보니, 논문까지도 나와있었다. 그래서 왜 이런 게 논문까지 나왔을까 보니, 여러 환경들을 비교해보고 적합한 Environment라는 것을 주장하기 위해 논문이 나온 것 같다. 그래서 앞으로 MARL 환경 구축시에 참고할 수 있을 것 같아 빠르게 읽어보고자 한다. 본 논문에서는 PettingZoo 라이브러리와 함께 제공되는 에이전트 환경 사이클("AEC") 게임 모델을 소개한다. PettingZoo는 범용적이고 우아한 Python API를 가진 다양한 다중 에이전트 환경들의 라이브러리이다. PettingZoo는 Multi-에이전트 강화 학습("MARL")에 대한 연구를 가속화하는 것을 목표로 개발되었으며, 이는 개방형과 유사한 방식으로 ..
2021.06.19 -
numpy에서 dict을 이용해서 값을 바꾸는 방법
특정 배열에서 dict을 이용해서 바꿔야 하는 경우가 있다. 기존에는 바꾸기 위해서 pandas에 replace를 사용하였는데, 이것이 은근 계산 비용이 많이 든다. 그래서 이 부분을 바꾸기 위해서 찾다가 발견한 것이 있어 공유한다. Code def replace_with_dict(ar, dic): # Extract out keys and values k = np.array(list(dic.keys())) v = np.array(list(dic.values())) # Get argsort indices sidx = k.argsort() # Drop the magic bomb with searchsorted to get the corresponding # places for a in keys (using ..
2021.06.06 -
Python Pkg) array를 gif로 바꿔주는 패키지
가끔 gif로 표현해야 하는 것들이 있다. 이때 보통 사진을 저장해서 gif로 만들었는데, 해당 패키지는 array를 저장해서 array를 이용해서 gif를 만들어준다. 아주 좋은 패키지인 것 같아 공유한다. 설치 방법 pip install array2gif 예제 코드 import numpy as np from array2gif import write_gif dataset = [ np.array([ [[255, 0, 0], [255, 0, 0]], # red intensities [[0, 255, 0], [0, 255, 0]], # green intensities [[0, 0, 255], [0, 0, 255]] # blue intensities ]), np.array([ [[0, 0, 255], [0, ..
2021.05.13 -
RL) Double DQN 알아보기
일단 double dqn을 보기에 앞서 기존의 q-learning과 deep q-learning을 간략하게 그림으로 보여주고 시작하겠다. 간략히 나온 배경에 대해 말하자면, 기존의 있던 deep q learning 같은 경우 action value에 대한 overestimate가 문제였다. 그래서 이 double dqn은 이러한 문제를 해결하기 위해 나온 것이다. 간략하게 핵심만 살펴보자. Double Q-Learning이 무엇인지? Double Q-Learning 알고리즘 Double Deep Q Network(Double DQN) 구현 Double Q-Learning이 무엇인지? double q learning은 [1] H. van Hasselt 2010 이 기존 q-learning에서 action ..
2021.05.09 -
python) histogram 알아보기
이번에는 histplot에 대해서 정리해보려고 한다. 확률 값을 density plot으로 표현하는 것보다 오히려 histogram으로 bins를 여러 개 쪼개는 것도 효과적이라는 생각을 가지게 되었기 때문이고 이것에 대해서 정리해보고자 한다. import seaborn as sns import matplotlib.pyplot as plt penguins = sns.load_dataset("penguins") sns.histplot(data=penguins, x="flipper_length_mm") bins 추가 fig, axes = plt.subplots(nrows=2, ncols=1) axes = axes.flatten() sns.histplot(data=penguins, x="flipper_leng..
2021.05.01 -
초기 Data Science Project 폴더 생성 및 tree strcture 확
위의 코드에서 일부 수정해서, 초기에 폴더 생성 관련한 코드를 공유한다. 매우 간단하니, 다른 분들도 사용할 때 자기에 프로젝트 상황에 맞게 수정해주시면 될 것 같다. 그리고 추가적으로 아래에는 간단하게 트리 구조를 볼 수 있는 코드가 있어 같이 구현해봤다. 현재 이 코드는 CMD 창에서 있는 현재 위치에서 생성하는 코드이다. import os root = ["src","test","model","data","notebook","output"] data_sub_node = ["raw","processed"] notebook_sub_node= ["eda","poc","modeling","evaluation"] src_sub_node = ["preprocessing","modeling","sampler"] ..
2021.04.24 -
책) 실습 Modeling and Simulation in Python
greenteapress.com/wp/modsimpy/ ## version 4 online code allendowney.github.io/ModSimPy/index.html Modeling and Simulation in Python — Modeling and Simulation in Python allendowney.github.io ## version3 pdf greenteapress.com/modsimpy/ModSimPy3.pdf
2021.03.31