时间序列学习 经典案例(1)【tsfresh】预测多只股票
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】预测多只股票相关推荐
- 时间序列学习 经典案例(3)离散傅里叶变换DFT(案例:时序去噪)
1.傅里叶定理 法国科学家傅里叶提出,任何一条周期性曲线,无论多么跳跃或不规则,都能表示成一组光滑正弦曲线叠加之和. 2.离散傅里叶变换 离散傅里叶变换即是把 一条周期性曲线 拆解成 一组光滑正弦曲线 ...
- 回归算法 经典案例 波士顿房价预测
回归是统计学中最有力的工具之一.机器学习监督学习算法分为分类算法和回归算法两种,其实就是根据类别标签分布类型为离散型.连续性而定义的.回归算法用于连续型分布预测,针对的是数值型的样本,使用回归,可以在 ...
- 深度学习经典案例解析:YOLO系列
https://www.toutiao.com/a6621051339352834564/ 2018-11-07 17:40:45 Faster R-CNN的方法目前是主流的目标检测方法,但是速度上并 ...
- NO.47-------线性回归分析经典案例(汽车价格预测)
数据集简介 主要包括3类指标: 汽车的各种特性. 保险风险评级:(-3, -2, -1, 0, 1, 2, 3). 每辆保险车辆年平均相对损失支付. 类别属性 make: 汽车的商标(奥迪,宝马... ...
- Comsol学习——经典案例:水杯中的自然对流
0.问题描述 案例几何模型和讲解PDF可以在官网案例中下载到: 1.选择研究空间维度 为了简化问题,这里可以用二维模型的旋转对称来简化建模.因此研究维度选择二维轴对称. 2.选择物理场 这个问题中涉及 ...
- EL之AdaBoost:集成学习之AdaBoost算法的简介、应用、经典案例之详细攻略
EL之AdaBoost:集成学习之AdaBoost算法的简介.应用.经典案例之详细攻略 目录 AdaBoost算法的简介 1.理解AdaBoost算法 1.1.从前向逐步递增角度来看理解AdaBoos ...
- DL:深度学习(神经网络)的简介、基础知识(神经元/感知机、训练策略、预测原理)、算法分类、经典案例应用之详细攻略
DL:深度学习(神经网络)的简介.基础知识(神经元/感知机.训练策略.预测原理).算法分类.经典案例应用之详细攻略 目录 深度学习(神经网络)的简介 1.深度学习浪潮兴起的三大因素 深度学习(神经网络 ...
- 花书+吴恩达深度学习(十四)卷积神经网络 CNN 之经典案例(LetNet-5, AlexNet, VGG-16, ResNet, Inception Network)
目录 0. 前言 1. LeNet-5 2. AlexNet 3. VGG-16 4. ResNet 残差网络 5. Inception Network 如果这篇文章对你有一点小小的帮助,请给个关注, ...
- 时间序列 工具库学习(1) tsfresh特征提取、特征选择
1. 更新清单: 2022.01.07:初次更新文章 2. 了解.安装tsfresh tsfresh 可以自动计算大量的时间序列特性,包含许多特征提取方法和强大的特征选择算法.tsfresh 用于从时 ...
最新文章
- Java Attach API
- python 动漫卡通人物图片大全_用Python把人物头像动漫化,不同的表情给你不同的惊喜...
- Linux常用命令 -- screen
- [转]ASP.NET页面HEAD区动态设置全攻略
- new file会创建文件吗_Python处理文件—os模块
- 【转】认识 C++ 中的 explicit 关键字
- Smali 语法文档
- python md5加密
- php7 参数类型限定,PHP 7.2新特性:参数类型声明(附代码)
- 2021-08-27 BERT4Rec简介
- 百战程序员python900集资源_尚学堂百战程序员:盘点那些实用的Python代码
- esp8266 接入 Amazon alexa智能家居
- java-php-python-springboot网络办公系统计算机毕业设计
- 计算机类学术期刊SCI/EI期刊核心期刊有哪些?
- 联想台式计算机 不启动u盘,联想台式机u盘启动不了怎么办
- 自己写C#用汽车诊断卡对MIT电机做调试
- 去除照片模糊的有效方法——像素重建与修复
- Windows 10 资源管理器使用深色主题
- 51单片机流水灯现象1
- C++:实现socket通信