【不是铁人赛】Day 01|虚拟货币价格预测(一)资料处理

友:你要不要一起参加铁人赛?
我:好啊!
(几天後)
我:乾我不小心忘了报名......
--------------------------------------> 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,)

小结

好的,今天我们把会训练模型需要的资料整理好了,明天将会带大家来训练不同的模型罗!


<<:  1.1 Design system - 为什麽要做?

>>:  003-转职

Day 13 - React: state

虽然昨天很低落,但我们要记得 Props 是唯读的!(我有写喔!) 但我们要做的网页不是静态资料(如...

【Day 16】jQuery事件

jQuery事件 说明:是为响应 HTML 页面中的事件而订制的。 何谓事件(Events)? 网页...

观赏鱼辨识系统说明-Day 01

观赏鱼辨识系统说明-Day 01 在接下来的30天会制作一个完整的系统包含前端-手机/网页,後端-N...

Day3|【Git】终端机常用基本指令 - Mac 作业系统为主

学习 Git 时,常常都是在终端机(Terminal)操作,虽然现在有很多图形介面工具(GUI,Gr...

[Day_6]资料型别、变数与运算子 - 练习题

这边会给大家一些练习题, 以及参考解答, 过程可能会与大家有些不尽相同, 还请各位多多包涵, 我会先...