0.关于代码内容和前置知识学习

点击这里

1.背景

将使用 Google、Facebook 和 Alphabet 的股票进行任务。

2.获取数据

%matplotlib inlineimport numpy as np
import pandas as pd
import matplotlib.pylab as pltfrom tsfresh import extract_features, select_features
from tsfresh.utilities.dataframe_functions import roll_time_series, make_forecasting_frame
from tsfresh.utilities.dataframe_functions import imputetry:import pandas_datareader.data as web
except ImportError:print("You need to install the pandas_datareader. Run pip install pandas_datareader.")from sklearn.ensemble import AdaBoostRegressor

读取数据

df = web.DataReader(['F', "AAPL", "GOOGL"], 'stooq')["High"]
df.head()plt.figure(figsize=(15, 6))
df.plot(ax=plt.gca())
plt.show()


需要确保在重新排序时保留股票代码信息:

df_melted = df.copy()
df_melted["date"] = df_melted.index
df_melted = df_melted.melt(id_vars="date", value_name="high").sort_values(["Symbols", "date"])
df_melted = df_melted[["Symbols", "date", "high"]]df_melted.head()

3.创建训练样本

df_rolled = roll_time_series(df_melted, column_id="Symbols", column_sort="date",max_timeshift=20, min_timeshift=5)

4.提取特征

X = extract_features(df_rolled.drop("Symbols", axis=1), column_id="id", column_sort="date", column_value="high", impute_function=impute, show_warnings=False)


通过给数据一个多索引而不是元组索引,让数据更容易处理:

# split up the two parts of the index and give them proper names
X = X.set_index([X.index.map(lambda x: x[0]), X.index.map(lambda x: x[1])], drop=True)
X.index.names = ["Symbols", "last_date"]

5. 特征选择 与建模预测

如果你不习惯pandas 转换,下一行可能看起来像魔术,但它做的是:
或将每只股票分别编号:

  • 按date排列
  • 以higt为index
  • 向未来移动1个时间步
  • 引入与上面X相同的多索引格式

(1)数据准备

y = df_melted.groupby("Symbols").apply(lambda x: x.set_index("date")["high"].shift(-1)).T.unstack()

一致性测试,查看是否一致:

y["AAPL", pd.to_datetime("2020-07-13")], df.loc[pd.to_datetime("2020-07-14"), "AAPL"]

y = y[y.index.isin(X.index)]
X = X[X.index.isin(y.index)]

(2)拆分数据

分解为train和test样本的工作原理与单个标识符相同,但这一次我们有一个多索引符号-日期,因此loc调用看起来更复杂一些。

X_train = X.loc[(slice(None), slice(None, "2018")), :]
X_test = X.loc[(slice(None), slice("2019", "2020")), :]y_train = y.loc[(slice(None), slice(None, "2018"))]
y_test = y.loc[(slice(None), slice("2019", "2020"))]

(3)特征选择

X_train_selected = select_features(X_train, y_train)

(4)建模:为每个股票分别训练一个回归器

adas = {stock: AdaBoostRegressor() for stock in ["AAPL", "F", "GOOGL"]}for stock, ada in adas.items():ada.fit(X_train_selected.loc[stock], y_train.loc[stock])

(5)预测【测试集评估】

#特征选择
X_test_selected = X_test[X_train_selected.columns]y_pred = pd.concat({stock: pd.Series(adas[stock].predict(X_test_selected.loc[stock]), index=X_test_selected.loc[stock].index)for stock in adas.keys()
})
y_pred.index.names = ["Symbols", "last_date"]

绘制图形:

plt.figure(figsize=(15, 6))y.unstack("Symbols").plot(ax=plt.gca())
y_pred.unstack("Symbols").plot(ax=plt.gca(), legend=None, marker=".")

时间序列学习 经典案例(1)【tsfresh】预测多只股票相关推荐

  1. 时间序列学习 经典案例(3)离散傅里叶变换DFT(案例:时序去噪)

    1.傅里叶定理 法国科学家傅里叶提出,任何一条周期性曲线,无论多么跳跃或不规则,都能表示成一组光滑正弦曲线叠加之和. 2.离散傅里叶变换 离散傅里叶变换即是把 一条周期性曲线 拆解成 一组光滑正弦曲线 ...

  2. 回归算法 经典案例 波士顿房价预测

    回归是统计学中最有力的工具之一.机器学习监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型.连续性而定义的.回归算法用于连续型分布预测,针对的是数值型的样本,使用回归,可以在 ...

  3. 深度学习经典案例解析:YOLO系列

    https://www.toutiao.com/a6621051339352834564/ 2018-11-07 17:40:45 Faster R-CNN的方法目前是主流的目标检测方法,但是速度上并 ...

  4. NO.47-------线性回归分析经典案例(汽车价格预测)

    数据集简介 主要包括3类指标: 汽车的各种特性. 保险风险评级:(-3, -2, -1, 0, 1, 2, 3). 每辆保险车辆年平均相对损失支付. 类别属性 make: 汽车的商标(奥迪,宝马... ...

  5. Comsol学习——经典案例:水杯中的自然对流

    0.问题描述 案例几何模型和讲解PDF可以在官网案例中下载到: 1.选择研究空间维度 为了简化问题,这里可以用二维模型的旋转对称来简化建模.因此研究维度选择二维轴对称. 2.选择物理场 这个问题中涉及 ...

  6. EL之AdaBoost:集成学习之AdaBoost算法的简介、应用、经典案例之详细攻略

    EL之AdaBoost:集成学习之AdaBoost算法的简介.应用.经典案例之详细攻略 目录 AdaBoost算法的简介 1.理解AdaBoost算法 1.1.从前向逐步递增角度来看理解AdaBoos ...

  7. DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略

    DL:深度学习(神经网络)的简介.基础知识(神经元/感知机.训练策略.预测原理).算法分类.经典案例应用之详细攻略 目录 深度学习(神经网络)的简介 1.深度学习浪潮兴起的三大因素 深度学习(神经网络 ...

  8. 花书+吴恩达深度学习(十四)卷积神经网络 CNN 之经典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)

    目录 0. 前言 1. LeNet-5 2. AlexNet 3. VGG-16 4. ResNet 残差网络 5. Inception Network 如果这篇文章对你有一点小小的帮助,请给个关注, ...

  9. 时间序列 工具库学习(1) tsfresh特征提取、特征选择

    1. 更新清单: 2022.01.07:初次更新文章 2. 了解.安装tsfresh tsfresh 可以自动计算大量的时间序列特性,包含许多特征提取方法和强大的特征选择算法.tsfresh 用于从时 ...

最新文章

  1. Java Attach API
  2. python 动漫卡通人物图片大全_用Python把人物头像动漫化,不同的表情给你不同的惊喜...
  3. Linux常用命令 -- screen
  4. [转]ASP.NET页面HEAD区动态设置全攻略
  5. new file会创建文件吗_Python处理文件—os模块
  6. 【转】认识 C++ 中的 explicit 关键字
  7. Smali 语法文档
  8. python md5加密
  9. php7 参数类型限定,PHP 7.2新特性:参数类型声明(附代码)
  10. 2021-08-27 BERT4Rec简介
  11. 百战程序员python900集资源_尚学堂百战程序员:盘点那些实用的Python代码
  12. esp8266 接入 Amazon alexa智能家居
  13. java-php-python-springboot网络办公系统计算机毕业设计
  14. 计算机类学术期刊SCI/EI期刊核心期刊有哪些?
  15. 联想台式计算机 不启动u盘,联想台式机u盘启动不了怎么办
  16. 自己写C#用汽车诊断卡对MIT电机做调试
  17. 去除照片模糊的有效方法——像素重建与修复
  18. Windows 10 资源管理器使用深色主题
  19. 51单片机流水灯现象1
  20. C++:实现socket通信

热门文章

  1. 京东网页(动态)搭建,利用jquery实现
  2. Linux 多线程编程实验知识整理
  3. 【十年签证】办理美国签证流程详解
  4. Java学习之路——接口
  5. 外贸供应链ERP怎么选?全流程综合管理解析
  6. 计算机网络基本设备及网络拓扑图
  7. PPT/Word中英文单词换行问题 (取消了西文在单词中间换行的选项,但英文部分依然不连续) 的解决方法
  8. 植物大战僵尸数据修改总结
  9. 无线路由器怎么连接移动wifi来使用
  10. 什么是单点故障与应对措施