Day 21 Azure machine learning: Upload data- 自己的资料自己传

Azure machine learning: Upload data- 自己的资料自己传

要做汇率的预测模型,就必须准备汇率的历史资料,我想investing.com是不错的资料来源,资料的历史够久,涵盖各个国家的各项金融商品:债券、凭证、期货、指数和股票,应有尽有(但没有台湾指数期货QQ)。也有Python套件可以使用,套件也会随着 investing.com 更新。取得历史资料後,经过 normalization 後,就可以将资料上传到datastore ,以便後续在workspace训练模型时使用。

安装Python套件

pip3.7 install investpy
pip3.7 install scikit-learn

示范程序

from datetime import datetime
import os
import pickle
import investpy
from sklearn.preprocessing import MinMaxScaler


# 准备一个名叫 currency 的资料夹
if not os.path.isdir("currency"):
    os.system("mkdir currency")

# 从 investing.com 取得台币与美金的历史汇率,取得每天的开盘价、最高价、最低价和收盘价
# 由於不知道资料从何时开始,我们先设定一个够古老的日期,西元1900年01月01日开始
usd_twd = investpy.get_currency_cross_historical_data(
    "USD/TWD",
    from_date="01/01/1900", 
    to_date=datetime.now().strftime("%d/%m/%Y"),
)
# 拿到的资料是 pandas DataFrame,所以可以使用 pandas 的功能
usd_twd.reset_index(inplace=True)
usd_twd.to_csv("currency/usd_twd.csv", index=False)
# 将每天的收盘价作 normalization 调整成 0 ~ 1 之间,即 (x - min(x)) / (max(x) - min(x))
currency_data = usd_twd.Close.values.reshape(-1, 1)
scaler = MinMaxScaler(feature_range=(0, 1))
scaler.transform(currency_data)
# 将 scaler 存成 pickle 档,方便之後使用
with open("currency/scaler.pickle", "wb") as f_h:
    pickle.dump(scaler, f_h)
f_h.close()

# 先取 2010/01/01 至 2020/12/31 的资料作为训练资料
currency_data = usd_twd[
    (usd_twd.Date >= "2010-01-01") & (usd_twd.Date < "2021-01-01")
]
# 把资料存成 csv 档,放到 currency 资料夹
currency_data.to_csv("currency/training_data.csv")

upload_file.py

"""
Upload data to Azure machine learning
"""
import os
import argparse
from azureml.core import Workspace, Dataset
from azureml.core.authentication import InteractiveLoginAuthentication


# 为了方便可以重复使用,上传不同的资料,所以用 command-line 带入参数执行
# folder:本地端的资料夹,内含欲上传资料
# target_folder:替上传到 datastore 後的资料夹命名
# dataname:为上传的资料集命名,会显示在 workspace 的资料页面中
def parse_args():
    """
    Parse arguments
    """
    parser = argparse.ArgumentParser()
    parser.add_argument("-f", "--folder", help="file folder", type=str)
    parser.add_argument(
        "-t", "--target_folder", help="file folder in datastore", type=str
    )
    parser.add_argument("-n", "--dataname", help="name of dataset", type=str)
    args = parser.parse_args()
    return args


def main():
    """
    Upload data to Azure machine learning
    """
    args = parse_args()
    interactive_auth = InteractiveLoginAuthentication(tenant_id=os.getenv("TENANT_ID"))
    work_space = Workspace.from_config(auth=interactive_auth)
    # workspace 有预设的 datastore,把资料存在预设的 datastore
    datastore = work_space.get_default_datastore()
    # 上传资料
    datastore.upload(
        src_dir=args.folder, target_path=args.target_folder, overwrite=True
    )
    # 上传资料之後,从 datastore 取得资料所在的资料夹,并将资料集注册
    dataset = Dataset.File.from_files(path=(datastore, args.target_folder))
    dataset.register(work_space, name=args.dataname)


if __name__ == "__main__":
    main()

取得汇率资料,也准备好upload_file.py,就可以直接在 terminal 执行,上传资料

python3.7 upload_file.py --folder currency --target_folder currency --dataname currency

从相对路径currency,上传到 datastore 的currency资料夹,注册资料集的名称也为 currency。

点进浏览,也就能看到已经上传的各个档案了。


资料准备好了,还要准备环境,确认需要用到的套件都备齐了,才能确保在workspace上程序执行比较不会有问题,所以,下一篇介绍如何设置环境。


<<:  Day06 - [丰收款] 安全签章签下去,API呼叫没在怕

>>:  Day7 跟着官方文件学习Laravel-开始学习Command用法

D11. 学习基础C、C++语言

D11: 关於EOF 这是一个在C语言里面才有的语法,EOF的意思就是End Of File,是AS...

DAY 12 群组相关事件及命令

event 群组相关事件有4种 Join event 加入事件 Leave event 离开事件 M...

[day-12] 一切的基础! Python "运算式与算符"的运用(Part .2)

比较算符   比较算符可大致列出以下几种常用的:   1. 大於(>)、大於等於(>=)...

[Day28] AWS Cloud9

AWS Cloud9 是一种云端整合开发环境 (IDE),您只需要一个浏览器便能撰写、执行和侦错程序...

[Day 3] 阿嬷都看得懂的 HTML 在干嘛

阿嬷都看得懂的 HTML 在干嘛 If a picture paints a thousand wo...