Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- PersistenceContext
- preemption #
- table not found
- mp4fpsmod
- pytest
- kotlin
- 달인막창
- Value too long for column
- tolerated
- JanusWebRTC
- 깡돼후
- terminal
- python
- 헥사고날아키텍처 #육각형아키텍처 #유스케이스
- taint
- 티스토리챌린지
- 개성국밥
- 겨울 부산
- 오블완
- JanusGateway
- VARCHAR (1)
- JanusWebRTCGateway
- JanusWebRTCServer
- 자원부족
- 코루틴 빌더
- addhooks
- vfr video
- Spring Batch
- PytestPluginManager
- 코루틴 컨텍스트
Archives
너와 나의 스토리
[ML] MondrianForestRegression으로 time series 주식 가격 예측하기 - feature 1개일 때 / 2개일 때 본문
Data Analysis/Machine learning
[ML] MondrianForestRegression으로 time series 주식 가격 예측하기 - feature 1개일 때 / 2개일 때
노는게제일좋아! 2019. 9. 6. 11:19반응형
feature 1개로 예측하기
1. 데이터 셋 load & library import
데이터 셋:
from skgarden import MondrianForestClassifier
from sklearn import datasets, cross_validation
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
dataset = pd.read_csv('./input/IBM_2006-01-01_to_2018-01-01.csv', index_col='Date', parse_dates=['Date'])
dataset=dataset.fillna(method='ffill')
dataset.head()
2. training set과 test set 만들기
2016년 데이터를 training set
2017년 데이터를 test set으로 만들었다.
우리는 Open 가격만 가지고 훈련 및 예측할 것이다.
training_set=dataset[:'2016'].iloc[:,0:1].values
test_set=dataset['2017':].iloc[:,0:1].values
3. training set을 입력과 정답으로 나누기
datalen=len(dataset[:'2016'])
X_train=[]
y_train=[]
for i in range(0,datalen-1):
X_train.append(training_set[i,0])
y_train.append(training_set[i+1,0])
예를 들어, 1일의 가격을 X_train이라고 하면 그 때 출력값의 정답은 2일의 가격이다
4. test set을 입력과 정답으로 나누기
testlen=len(test_set)
X_test=[]
y_test=[]
for i in range(0,testlen-1):
X_test.append(test_set[i,0])
y_test.append(test_set[i+1,0])
5. list를 ndim array로 변환
#list -> ndim array로 변환
X_train=np.reshape(X_train,(-1,1))
y_train=np.reshape(y_train,(-1,1))
X_test=np.reshape(X_test,(-1,1))
y_test=np.reshape(y_test,(-1,1))
5. MondrianForestRegerssor 모델 생성 및 훈련
from skgarden import MondrianForestRegressor
mfr=MondrianForestRegressor(random_state=1,max_depth=5)
mfr.partial_fit(X_train,y_train)
y_pred,y_std=mtr.predict(X_test,return_std=True)
6. 결과 보기
그래프
plt.plot(test_set,color='red',label='Real Price')
plt.plot(y_pred,color='blue',label='Predicted Price')
plt.xlabel('Time')
plt.ylabel('Stock Price')
plt.legend()
plt.show()
정확도 측정
mfr.score(y_test,y_pred)
feature 2개로 예측하기 - open 가격으로 high 가격 예측하기
# 데이터 load 및 import는 위와 동일
#open값과 High 값
training_set=dataset[:'2016'].iloc[:,0:2].values
test_set=dataset['2017':].iloc[:,0:2].values
X_train=dataset[:'2016'].iloc[:,0:1].values
y_train=dataset[:'2016'].iloc[:,1:2].values
X_test=dataset[:'2017'].iloc[:,0:1].values
y_test=dataset[:'2017'].iloc[:,1:2].values
from skgarden import MondrianTreeRegressor
mtr=MondrianTreeRegressor(random_state=1,max_depth=5)
mtr.fit(X_train,y_train)
y_pred,y_std=mtr.predict(X_test,return_std=True)
plt.plot(y_test,color='red',label='Real Price')
plt.plot(y_pred,color='blue',label='Predicted Price')
plt.xlabel('Time')
plt.ylabel('Stock Price')
plt.legend()
plt.show()
그래프
정확도
=> 0.9734093989551073
반응형
'Data Analysis > Machine learning' 카테고리의 다른 글
[ML] 'Robust Random Cut Forest for anomaly detection' 설명 및 library (Online Anomaly Detection) (0) | 2019.09.09 |
---|---|
Amazon SageMaker / Jupyter 노트북 인스턴스 생성 및 실행 / 커널 설치 / mxnet_p36 (0) | 2019.09.09 |
[ML] Mondrian Forest - API reference / Properties (0) | 2019.09.04 |
[ML] Mondrian Forest (0) | 2019.09.02 |
[ML] 푸아송 분포(Poisson distribution) (0) | 2019.08.27 |
Comments