iT邦幫忙

1

【不是鐵人賽】Day 01|虛擬貨幣價格預測(一)資料處理

  • 分享至 

  • xImage
  •  

友:你要不要一起參加鐵人賽?
我:好啊!
(幾天後)
我:乾我不小心忘了報名......
--------------------------------------> 2021.09.17


本系列的目標如下

  1. 陪我同事參賽,一起寫文。
  2. 帶大家使用不同的模型來預測漲跌。
  3. 帶大家使用不同的特徵來預測漲跌。
  4. 總目標是發大財。

今天先來跟大家快速的把所需的資料整理好,以下是會使用到的工具,因為網路上的教學很多,所以就不教大家怎麼設定一些有的沒有的了XDD,那我們...累狗!

Step 0. 了解資料。

  • 大家從kaggle把資料下載下來之後,別忘了先去看看有哪些欄位喔。
  • 一般來說,金融預測會使用Open, High, Low, Close這四項數據來做。

Step 1. 匯入使用的套件。

import numpy as np
import pandas as pd
import tensorflow as tf

Step 2. 使用pandas讀取資料,以下以比特幣為例。

coin_data = pd.read_csv('coin_Bitcoin.csv')
coin_data.head()    # 顯示前面幾筆資料,預設五筆。

Step 3. 資料清洗。

  • 我們現在只會使用到四種數據,開盤價,最高價,最低價,收盤價。
  • 我們使用drop()來丟掉不必要的欄位,丟完之後應該只會剩下四項,一樣使用head()來檢查看看。
data = coin_data.drop(['SNo', 'Name', 'Symbol', 'Date', 'Volume', 'Marketcap'], axis=1)
data.head()

Step 4. 產生訓練資料與標注資料。

  • 時間序列的預測任務所使用的資料很多變,我們會使用前七天的四項數據,來預測第八天的漲跌。
  • 我們的預測結果是第八天的收盤價減去第七天的收盤價,如果漲,就是1,反之為0。
  • 簡單來說,我們的邏輯就是,我使用到今天為止七天前的資料來預測明天會不會漲。
train_data = []
for idx in range(len(data)-7):
    train_data.append(data.values[idx:idx+7].tolist())

train_label = []
for idx in range(7, len(data)):
    rise_or_fall = data['Close'][idx] - data['Close'][idx-1]
    if rise_or_fall >= 0:
        rise_or_fall = 1
    else:
        rise_or_fall = 0
    train_label.append(rise_or_fall)

稍微檢查一下data跟label長度有沒有一樣。

print(np.array(train_data).shape)
print(np.array(train_label).shape)
# (2984, 7, 4)
# (2984,)

小結

好的,今天我們把會訓練模型需要的資料整理好了,明天將會帶大家來訓練不同的模型囉!


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
佑佑來了
iT邦新手 5 級 ‧ 2021-09-17 23:32:31

推推,
不是鐵人賽的鐵人。

我要留言

立即登入留言