datascience 16

문자열 앞에 0채우기(주식 ticker)

한국 주식의 티커를 불러왔을 때 앞 부분에 0이 있는 티커의 경우 0이 생략되어 int형태로 불러와지는 경우가 있다. 이 경우 Sereis데이터를 string형태로 바꾸고 str의 자료구조에서 .zfill() 메서드를 활용하면 생략된 0을 채워줄 수 있다. 한국 주식 티커는 6자리이므로 파라미터로 6을 입력해주면 된다. df["종목코드2"] = df["종목코드"].astype('str').str.zfill(6)

backtrader 오류(FileNotFoundError) 솔루션

단순히 anaconda prompt에서 pip install backtrader로 설치하고 cerebro.run()을 실행했을 때 위과 같은 에러가 계속 발생했다. 이를 해결하고자 구글링해봤을 때 backtrader 패키지 내부의 yahoo.py의 코드를 수정해줘야 한다는 솔루션이 대부분이었다. 출처: https://jonghyunho.github.io/data/analysis/Backtrader-%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%ED%8A%B8%EB%A0%88%EC%9D%B4%EB%94%A9-%EC%8B%9C%EB%AE%AC%EB%A0%88%EC%9D%B4%EC%85%98.html 하지만 코드를 수정함과 동시에 패키지 재설치 및 파이썬 버전까지 바꿔가며 실행해봤으나 ..

대표적인 머신러닝 분류성능 평가지표 총정리

머신러닝의 분류성능 평가지표를 공부하며 상당히 헷갈리는 부분이 많았다. 실제 값과 예측 값, 그리고 positive와 negative의 위치가 변하면 TP,TN,FN,FP의 위치도 변하기 때문에 혼동행렬을 보고 바로 성능지표를 계산하기 어려울 때가 생긴다. 또한 다양한 성능지표가 존재하고 분야 별로 그 평가지표의 명칭이 다르기도 해서 용어의 의미가 정리가 잘 되지 않았다. 먼저 머신러닝의 혼동행렬에서 도출되는 대표적인 분류성능 평가지표들의 개념과 그 관계들에 초점을 맞추어 정리해보고자 한다. 그리고 이러한 성능지표들은 통계학에서 배운 가설검정의 개념과 겹치는 부분이 있는데 이를 비교해보며 깊은 이해를 해볼 것이다. 1. 머신러닝의 대표적인 분류성능 평가지표 총정리 1.1 Accuracy(정확도): 실제 ..

datascience/ML 2021.06.11

벨만 방정식(Bellman Equation)

0단계: 재귀적 표현 $v_{\pi}(s_{t})=\mathbb{E}_{\pi}[r_{t+1}+\gamma v_{\pi}(s_{t+1})]$ $q_{\pi}(s_{t},a_{t})=\mathbb{E}_{\pi}[r_{t+1}+\gamma q_{\pi}(s_{t+1},a_{t+1})]$ 1단계: $v_{\pi}$와 $q_{\pi}$를 서로를 이용해 표현 $v_{\pi}(s) = \sum_{a\in A}\pi(a|s)q_{\pi}(s,a)$ $\Leftrightarrow s의 밸류 = \sum_{}(s에서 a를 실행할 확률) * (s에서 a를 실행하는 것의 밸류)$ $q_{\pi}(s,a)=r_{s}^{a}+\gamma \sum_{s'\in S}P_{ss'}^{a}v_{\pi}(s')$ $\Leftright..

datascience/RL 2021.06.07

Backpropagation(역전파) - 코드로 구해보기

XOR문제를 해결하는 과정에서 역전파의 적용을 코드로 구현해보고자 한다. $x_{1}$ $x_{1}$ output 0 0 0 0 1 1 1 0 1 1 1 0 기본 값 및 함수 설정 import random import numpy as np random.seed(777) # 입력값 및 타겟값 XOR문제 data = [ [[0, 0], [0]], [[0, 1], [1]], [[1, 0], [1]], [[1, 1], [0]] ] # 실행 횟수(iterations), 학습률(lr), 모멘텀 계수(mo) 설정 iterations=5000 lr=0.1 mo=0.4 XOR문제를 나타내는 입력값과 타겟값을 data에 저장하고 역전파 구현을 위한 변수인 실행 횟수, 학습률, 모멘텀 계수를 설정해주었다. # 활성화 함수 ..

datascience/DL 2021.06.06

Backpropagation(역전파) - 은닉층 가중치 업데이트 계산식 도출

2021.05.22 - [AI/DL] - Backpropagation(역전파) - 가중치 업데이트 계산식 도출1 Backpropagation(역전파) - 가중치 업데이트 계산식 도출1 입력값과 은닉층 그리고 출력층에서 주어지는 수는 각각 2개씩이다. 가중치의 합은 $a$로 활성화 함수는 $\sigma$(sigmoid function)로 주어진다. $w_{31}$(출력층의 가중치)의 가중치 업데이트 계산식 도 patrickstar-jjh.tistory.com 이전 글에 이어서 이번에는 은닉층의 가중치를 업데이트 하는 계산식에 대해 알아보고자 한다. $w_{11}$(은닉층의 가중치)의 가중치 업데이트 계산식 산출 기초적인 식인 $w_{11}(t+1)=w_{11}(t)-\frac{\partial error}{..

datascience/DL 2021.05.25

Backpropagation(역전파) - 출력층 가중치 업데이트 계산식 도출

입력값과 은닉층 그리고 출력층에서 주어지는 수는 각각 2개씩이다. 가중치의 합은 $a$로 활성화 함수는 $\sigma$(sigmoid function)로 주어진다. $w_{31}$(출력층의 가중치)의 가중치 업데이트 계산식 도출 기초적인 식인 $w_{31}(t+1)=w_{31}(t)-\frac{\partial error}{\partial w_{31}}$에서 $\frac{\partial error}{\partial w_{31}}$를 구하고자 한다 여기서 $error=\frac{1}{2}(y_{t1}-y_{1})^{2}+\frac{1}{2}(y_{t2}-y_{2})^{2}$ 이다. (각 출력값의 MSE의 합) 체인룰에 의해 $\frac{\partial error }{\partial w_{31}}=$ $\fr..

datascience/DL 2021.05.22

강화학습(Reinforced Learning) Monte Carlo 학습 구현

GridWorld 구현 import random import numpy as np class GridWorld(): def __init__(self): self.x=0 self.y=0 def step(self, a): # 0번 액션: 왼쪽, 1번 액션: 위, 2번 액션: 오른쪽, 3번 액션: 아래쪽 if a==0: self.move_left() elif a==1: self.move_up() elif a==2: self.move_right() elif a==3: self.move_down() reward = -1 # 보상은 항상 -1로 고정 done = self.is_done() return (self.x, self.y), reward, done def move_right(self): self.y += 1..

datascience/RL 2021.05.18

딥러닝 순전파 실습(퍼셉트론 계산과정)

딥러닝에서 가장 기본적인 순전파과정에 대한 실습 입력값 $x_{1}$과 $x_{2}$에 각각 가중치 $w_{1}$과 $w_{2}$를 곱한 값을 활성화함수로 계산하여 0 혹은 1로 y값 도출 import numpy as np # 입력층 -> 은닉층(1층) X = np.array([10, 20]) W1 = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]]) # weight 2x3개 B1 = np.array([1, 2, 3]) # bias 3개 def sigmoid(x): # 활성화 함수 return 1 / (1 + np.exp(-x)) A1 = np.dot(X, W1) + B1 Z1 = sigmoid(A1) print('A1 :', A1) # 입력신호 print('Z1 :', Z..

datascience/DL 2021.05.16