본문 바로가기
PYTHON

20200321 - 파이썬(미래 예측 머신러닝 모델(삼성전자, 이더리움))

by 낫싱 2020. 3. 21.
728x90
반응형

 

ethereum-stock-forecasting.pdf
0.40MB
ethereum-stock-forecasting.ipynb
0.03MB
samsung-stock-forecasting.pdf
0.38MB
samsung-stock-forecasting.ipynb
0.04MB

이더리움 가격 예측 모델

과거데이터를이용해서 과거데이터를 예측하고 실제 과거 데이터로 검증해보는 방식

모듈 import

In [1]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from keras.models import Sequential

from keras.layers import LSTM, Dropout, Dense, Activation

# LSTM (Long Short Term Memory) 모델 사용

# 인공지능 모델 : 이전 데이터를 이용하여 이후 데이터를 예측하는 인공지능 모델

# from keras.callbacks import TensorBoard, MedelCheckpoint, ReduceLROnPlateau

import datetime

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Using TensorFlow backend.

Load Dataset (데이터 불러오기)

In [2]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

data = pd.read_csv('dataset/ethereum.csv')

data['High'].fillna(data['High'].mean(), inplace=True) # unique()값으로 조회해 본 결과 데이터 중 nan값이 있었음.

data['Low'].fillna(data['Low'].mean(), inplace=True)

data.head(3)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[2]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 3열 선택3열 다음에 열 추가
  • 4열 선택4열 다음에 열 추가
  • 5열 선택5열 다음에 열 추가
  • 6열 선택6열 다음에 열 추가
  • 7열 선택7열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가

열 너비 조절

행 높이 조절

 

Date

Open*

High

Low

Close**

Volume

Market Cap

0

21-Mar-19

140.48

141.00

135.86

136.64

5,087,247,796

14,392,427,839

1

22-Mar-19

136.56

138.79

136.23

137.18

4,490,899,266

14,451,740,115

2

23-Mar-19

137.04

139.39

136.91

138.24

4,436,568,613

14,565,143,357

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Compute Mid Price (중간 가격 계산)

In [3]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

high_prices = data['High'].values

low_prices = data['Low'].values

mid_prices = (high_prices + low_prices)/2 #중간가격 저장

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Create Windows(윈도우 생성)

In [4]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

seq_len = 50 # 최근 50일간의 데이터를 파악하여 미래가격 예측, 50이라는 것이 window 사이즈 (변경 가능)

sequence_length = seq_len + 1 # 50개의 데이터를 보고 51번째를 예측하기 위해 + 1 설정, 한칸씩 밀리면서 윈도우를 만들어간다.

 

result = []

for i in range(len(mid_prices) - sequence_length): # for문을 통해 \

result.append(mid_prices[i:i+sequence_length]) # 51개씩 단계별로 윈도우를 result 에 저장

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Normalize Data (정규화)

In [5]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

normalized_data = []

for window in result: #정규화 작업 : 예측률을 높이기 위해 한다.

normalized_window = [((float(p) / float(window[0]))-1)for p in window] # 윈도우를 모두 모두 읽으며 윈도우를 정규화한다.

# 첫 번째에서 자기 자신을 자기로 나누고 -1을 해서 0으로 만든다.

# 다음날 데이터에서 전날 데이터를 나눈것 에서 -1 해서 비율을 모두 반복계산하여 정규화

normalized_data.append(normalized_window) # 정규화 데이터에 저장

 

result = np.array(normalized_data)

 

# 트레이닝 데이터와 테스트 데이터를 나눈다.

row = int(round(result.shape[0]*0.9)) # 90% 를 트레이닝 셋으로 나눈다.

train = result[:row,:] # 트레이닝 셋으로 나뉜 결과를 저장

np.random.shuffle(train) # 트레이닝 셋을 random으로 섞어서 해주는게 좋다.(순서대로하면 익숙해질 수 있음)

 

x_train = train[:,:-1]

x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1],1))

y_train = train[:,-1]

 

x_test = result[row:,:-1]

x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1],1))

y_test = result[row:,-1]

 

x_train.shape, x_test.shape

# ((1059, 50, 1), (118, 50, 1)) --> 1059일의 데이터를 기반으로 118일의 주식 가격을 예측할 것이다.

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[5]:

((284, 50, 1), (31, 50, 1))

Build a Model(모델생성)

In [6]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

model = Sequential() # keras.models.Sequential() : 모델을 순차적으로 정의하는 클래스

 

#keras.layers.LSTM() : LSTM 레이어

#LSTM 이라는 모듈이 존재, input은 50개

model.add(LSTM(50, return_sequences=True, input_shape=(50,1))) # 1st LSTM유닛 수 : 50개(숫자 조정 가능 -> 조정해가며 성능 테스트 가능)

 

model.add(LSTM(64, return_sequences=False)) # 2nd LSTM유닛 수 : 64개(숫자 조정 가능 -> 조정해가며 성능 테스트 가능)

 

#keras.layers.Dense() : Fully connected layer

model.add(Dense(1, activation='linear')) # 하루의 데이터를 예측할 것 이기 때문에 1 작성, 작동방법은 선형계획법

 

#mse : Mean Squared Error

model.compile(loss='mse', optimizer='rmsprop')

 

model.summary()

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= lstm_1 (LSTM) (None, 50, 50) 10400 _________________________________________________________________ lstm_2 (LSTM) (None, 64) 29440 _________________________________________________________________ dense_1 (Dense) (None, 1) 65 ================================================================= Total params: 39,905 Trainable params: 39,905 Non-trainable params: 0 _________________________________________________________________

Traning(학습)

In [7]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

model.fit(x_train, y_train, # 학습을 시키기 위해 fit 메소드 사용(트레이닝셋을 넣어줌)

validation_data=(x_test, y_test), # 검증 데이터에 테스트 데이터를 넣어준다.

batch_size=10, # 한 번에 몇 개씩 묶어서 학습시킬건지 지정

epochs=20) # 20번동안 반복학습을 시킨다.

#실행 시 loss 가 발생하게 되는데, loss가 발생될수록 학습이 잘 되고 있다는 증거가 된다.

# validation loss의 값이 작을수록 학습이 잘 된 것

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Train on 284 samples, validate on 31 samples Epoch 1/20 284/284 [==============================] - 1s 5ms/step - loss: 0.0222 - val_loss: 0.1359 Epoch 2/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0111 - val_loss: 0.0493 Epoch 3/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0102 - val_loss: 0.0582 Epoch 4/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0076 - val_loss: 0.0333 Epoch 5/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0067 - val_loss: 0.0424 Epoch 6/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0058 - val_loss: 0.0311 Epoch 7/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0063 - val_loss: 0.0231 Epoch 8/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0049 - val_loss: 0.0212 Epoch 9/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0054 - val_loss: 0.0219 Epoch 10/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0052 - val_loss: 0.0229 Epoch 11/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0044 - val_loss: 0.0187 Epoch 12/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0042 - val_loss: 0.0197 Epoch 13/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0041 - val_loss: 0.0193 Epoch 14/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0037 - val_loss: 0.0237 Epoch 15/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0032 - val_loss: 0.0142 Epoch 16/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0034 - val_loss: 0.0146 Epoch 17/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0030 - val_loss: 0.0145 Epoch 18/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0028 - val_loss: 0.0114 Epoch 19/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0027 - val_loss: 0.0117 Epoch 20/20 284/284 [==============================] - 1s 3ms/step - loss: 0.0027 - val_loss: 0.0125

Out[7]:

<keras.callbacks.callbacks.History at 0x1d350386cc8>

Prediction(예측)

In [8]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

# 모델이 잘 학습되었는지 검증하고 그래프 작성

pred = model.predict(x_test) # model.predict() : 모델을 사용하여 예측, 예측한 결과값을 pred에 저장

 

fig = plt.figure(facecolor = 'white')

ax = fig.add_subplot(111)

ax.plot(y_test, label='True')

ax.plot(pred, label='Prediction')

ax.legend()

plt.show()

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

대표사진 삭제

사진 설명을 입력하세요.


삼성전자 주식 가격 예측 모델

과거데이터를이용해서 과거데이터를 예측하고 실제 과거 데이터로 검증해보는 방식

모듈 import

In [1]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

import pandas as pd

import numpy as np

import matplotlib.pyplot as plt

from keras.models import Sequential

from keras.layers import LSTM, Dropout, Dense, Activation

# LSTM (Long Short Term Memory) 모델 사용

# 인공지능 모델 : 이전 데이터를 이용하여 이후 데이터를 예측하는 인공지능 모델

# from keras.callbacks import TensorBoard, MedelCheckpoint, ReduceLROnPlateau

import datetime

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Using TensorFlow backend.

Load Dataset (데이터 불러오기)

In [2]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

data = pd.read_csv('dataset/samsung.csv')

data['High'].fillna(data['High'].mean(), inplace=True) # unique()값으로 조회해 본 결과 데이터 중 nan값이 있었음.

data['Low'].fillna(data['Low'].mean(), inplace=True)

data.head(3)

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[2]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 1열 선택1열 다음에 열 추가
  • 2열 선택2열 다음에 열 추가
  • 3열 선택3열 다음에 열 추가
  • 4열 선택4열 다음에 열 추가
  • 5열 선택5열 다음에 열 추가
  • 6열 선택6열 다음에 열 추가
  • 7열 선택7열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가
  • 1행 선택1행 다음에 행 추가
  • 2행 선택2행 다음에 행 추가
  • 3행 선택3행 다음에 행 추가

열 너비 조절

행 높이 조절

 

Date

Open

High

Low

Close

Adj Close

Volume

0

2015-03-23

29240.0

29480.0

29160.0

29340.0

284.529907

8122900.0

1

2015-03-24

29100.0

29560.0

29100.0

29520.0

286.275543

9113150.0

2

2015-03-25

29740.0

29760.0

29440.0

29700.0

288.021179

9369050.0

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Compute Mid Price (중간 가격 계산)

In [3]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

high_prices = data['High'].values

low_prices = data['Low'].values

mid_prices = (high_prices + low_prices)/2 #중간가격 저장

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Create Windows(윈도우 생성)

In [4]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

seq_len = 50 # 최근 50일간의 데이터를 파악하여 미래가격 예측, 50이라는 것이 window 사이즈 (변경 가능)

sequence_length = seq_len + 1 # 50개의 데이터를 보고 51번째를 예측하기 위해 + 1 설정, 한칸씩 밀리면서 윈도우를 만들어간다.

 

result = []

for i in range(len(mid_prices) - sequence_length): # for문을 통해 \

result.append(mid_prices[i:i+sequence_length]) # 51개씩 단계별로 윈도우를 result 에 저장

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Normalize Data (정규화)

In [5]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

normalized_data = []

for window in result: #정규화 작업 : 예측률을 높이기 위해 한다.

normalized_window = [((float(p) / float(window[0]))-1)for p in window] # 윈도우를 모두 모두 읽으며 윈도우를 정규화한다.

# 첫 번째에서 자기 자신을 자기로 나누고 -1을 해서 0으로 만든다.

# 다음날 데이터에서 전날 데이터를 나눈것 에서 -1 해서 비율을 모두 반복계산하여 정규화

normalized_data.append(normalized_window) # 정규화 데이터에 저장

 

result = np.array(normalized_data)

 

# 트레이닝 데이터와 테스트 데이터를 나눈다.

row = int(round(result.shape[0]*0.9)) # 90% 를 트레이닝 셋으로 나눈다.

train = result[:row,:] # 트레이닝 셋으로 나뉜 결과를 저장

np.random.shuffle(train) # 트레이닝 셋을 random으로 섞어서 해주는게 좋다.(순서대로하면 익숙해질 수 있음)

 

x_train = train[:,:-1]

x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1],1))

y_train = train[:,-1]

 

x_test = result[row:,:-1]

x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1],1))

y_test = result[row:,-1]

 

x_train.shape, x_test.shape

# ((1059, 50, 1), (118, 50, 1)) --> 1059일의 데이터를 기반으로 118일의 주식 가격을 예측할 것이다.

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Out[5]:

((1059, 50, 1), (118, 50, 1))

Build a Model(모델생성)

In [6]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

model = Sequential() # keras.models.Sequential() : 모델을 순차적으로 정의하는 클래스

 

#keras.layers.LSTM() : LSTM 레이어

#LSTM 이라는 모듈이 존재, input은 50개

model.add(LSTM(50, return_sequences=True, input_shape=(50,1))) # 1st LSTM유닛 수 : 50개(숫자 조정 가능 -> 조정해가며 성능 테스트 가능)

 

model.add(LSTM(64, return_sequences=False)) # 2nd LSTM유닛 수 : 64개(숫자 조정 가능 -> 조정해가며 성능 테스트 가능)

 

#keras.layers.Dense() : Fully connected layer

model.add(Dense(1, activation='linear')) # 하루의 데이터를 예측할 것 이기 때문에 1 작성, 작동방법은 선형계획법

 

#mse : Mean Squared Error

model.compile(loss='mse', optimizer='rmsprop')

 

model.summary()

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Model: "sequential_1" _________________________________________________________________ Layer (type) Output Shape Param # ================================================================= lstm_1 (LSTM) (None, 50, 50) 10400 _________________________________________________________________ lstm_2 (LSTM) (None, 64) 29440 _________________________________________________________________ dense_1 (Dense) (None, 1) 65 ================================================================= Total params: 39,905 Trainable params: 39,905 Non-trainable params: 0 _________________________________________________________________

Traning(학습)

In [7]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

model.fit(x_train, y_train, # 학습을 시키기 위해 fit 메소드 사용(트레이닝셋을 넣어줌)

validation_data=(x_test, y_test), # 검증 데이터에 테스트 데이터를 넣어준다.

batch_size=10, # 한 번에 몇 개씩 묶어서 학습시킬건지 지정

epochs=20) # 20번동안 반복학습을 시킨다.

#실행 시 loss 가 발생하게 되는데, loss가 발생될수록 학습이 잘 되고 있다는 증거가 된다.

# validation loss의 값이 작을수록 학습이 잘 된 것

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

Train on 1059 samples, validate on 118 samples Epoch 1/20 1059/1059 [==============================] - 4s 3ms/step - loss: 0.0016 - val_loss: 0.0042 Epoch 2/20 1059/1059 [==============================] - 3s 3ms/step - loss: 0.0010 - val_loss: 0.0031 Epoch 3/20 1059/1059 [==============================] - 3s 3ms/step - loss: 8.8237e-04 - val_loss: 0.0023 Epoch 4/20 1059/1059 [==============================] - 3s 3ms/step - loss: 8.0395e-04 - val_loss: 0.0021 Epoch 5/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.7211e-04 - val_loss: 0.0021 Epoch 6/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.2863e-04 - val_loss: 0.0019 Epoch 7/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.3518e-04 - val_loss: 0.0019 Epoch 8/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.4325e-04 - val_loss: 0.0019 Epoch 9/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.2496e-04 - val_loss: 0.0019 Epoch 10/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.2531e-04 - val_loss: 0.0020 Epoch 11/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.2200e-04 - val_loss: 0.0018 Epoch 12/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.2005e-04 - val_loss: 0.0018 Epoch 13/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.2309e-04 - val_loss: 0.0018 Epoch 14/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.2376e-04 - val_loss: 0.0019 Epoch 15/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.4035e-04 - val_loss: 0.0018 Epoch 16/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.0220e-04 - val_loss: 0.0018 Epoch 17/20 1059/1059 [==============================] - 3s 3ms/step - loss: 6.9209e-04 - val_loss: 0.0018 Epoch 18/20 1059/1059 [==============================] - 3s 3ms/step - loss: 6.9054e-04 - val_loss: 0.0018 Epoch 19/20 1059/1059 [==============================] - 3s 3ms/step - loss: 6.9541e-04 - val_loss: 0.0018 Epoch 20/20 1059/1059 [==============================] - 3s 3ms/step - loss: 7.4437e-04 - val_loss: 0.0018

Out[7]:

<keras.callbacks.callbacks.History at 0x1b5f97f95c8>

Prediction(예측)

In [14]:

셀 전체 선택

  • 0열 선택0열 다음에 열 추가
  • 0행 선택0행 다음에 행 추가

열 너비 조절

행 높이 조절

# 모델이 잘 학습되었는지 검증하고 그래프 작성

pred = model.predict(x_test) # model.predict() : 모델을 사용하여 예측, 예측한 결과값을 pred에 저장

 

fig = plt.figure(facecolor = 'white')

ax = fig.add_subplot(111)

ax.plot(y_test, label='True')

ax.plot(pred, label='Prediction')

ax.legend()

plt.show()

print(pred) #결과값 확인

  • 셀 병합
  • 행 분할
  • 열 분할
  • 너비 맞춤
  • 삭제

대표사진 삭제

사진 설명을 입력하세요.

[[ 0.05961623] [ 0.05710997] [ 0.06249883] [ 0.05184297] [ 0.03296075] [ 0.02326113] [ 0.03925456] [ 0.03693933] [ 0.04316682] [ 0.06003437] [ 0.07659261] [ 0.09575766] [ 0.12206288] [ 0.12497512] [ 0.14422642] [ 0.1664247 ] [ 0.17614256] [ 0.19016887] [ 0.19408421] [ 0.16810432] [ 0.18688083] [ 0.17312591] [ 0.16742434] [ 0.16434506] [ 0.1599509 ] [ 0.16860716] [ 0.18495469] [ 0.20776035] [ 0.22019121] [ 0.2023981 ] [ 0.18321405] [ 0.1999466 ] [ 0.19267614] [-0.01420047] [ 0.21268892] [ 0.22203086] [ 0.17310993] [ 0.14255907] [ 0.10791052] [ 0.09968138] [ 0.11074518] [ 0.12448516] [ 0.11358352] [ 0.10186405] [ 0.05749896] [ 0.03884722] [ 0.02713385] [ 0.01480235] [ 0.02577111] [ 0.03406248] [ 0.0605144 ] [ 0.0576622 ] [ 0.0621194 ] [ 0.10334846] [ 0.1287644 ] [ 0.13150798] [ 0.15495853] [ 0.1604187 ] [ 0.14774594] [ 0.122572 ] [ 0.11950624] [ 0.09935219] [ 0.100276 ] [ 0.12279246] [ 0.12751241] [ 0.09538809] [ 0.097128 ] [ 0.07965604] [ 0.10675669] [ 0.11283187] [ 0.13204859] [ 0.16624056] [ 0.16887851] [ 0.1859232 ] [ 0.14651085] [ 0.14403036] [ 0.15651123] [ 0.17511661] [ 0.17569438] [ 0.19056495] [ 0.1808701 ] [ 0.14228581] [ 0.47156036] [ 0.10419645] [ 0.0880201 ] [ 0.07763342] [ 0.10724379] [ 0.16291082] [ 0.17916672] [ 0.16046213] [ 0.14117111] [ 0.16070996] [ 0.16779071] [ 0.2022009 ] [ 0.202606 ] [ 0.23422204] [ 0.22660176] [ 0.20730253] [ 0.20439766] [ 0.17086238] [ 0.14089118] [ 0.11767689] [ 0.0813807 ] [ 0.04738265] [ 0.02028969] [-0.0154103 ] [-0.00564069] [ 0.00058945] [ 0.02482226] [ 0.0217859 ] [ 0.02702395] [ 0.00066443] [-0.04332641] [-0.06095117] [-0.22378553] [-0.27257925] [-0.26543823] [-0.28036764]]

 

728x90
반응형

댓글