首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

时间序列预测模型实战案例(Xgboost)(Python)(机器学习)包括时间序列预测和时间序列分类,点击即可运行!

人工智能 407.12KB 38 需要积分: 1
立即下载

资源介绍:

内容概要 资源包括三部分(时间序列预测部分和时间序列分类部分和所需的测试数据集全部包含在内) 在本次实战案例中,我们将使用Xgboost算法进行时间序列预测。Xgboost是一种强大的梯度提升树算法,适用于各种机器学习任务,它最初主要用于解决分类问题,在此基础上也可以应用于时间序列预测。 时间序列预测是通过分析过去的数据模式来预测未来的数值趋势。它在许多领域中都有广泛的应用,包括金融、天气预报、股票市场等。我们将使用Python编程语言来实现这个案例。 其中包括模型训练部分和保存部分,可以将模型保存到本地,一旦我们完成了模型的训练,我们可以使用它来进行预测。我们将选择合适的输入特征,并根据模型的预测结果来生成未来的数值序列。最后,我们会将预测结果与实际观测值进行对比,评估模型的准确性和性能。 适合人群:时间序列预测的学习者,机器学习的学习者, 能学到什么:本模型能够让你对机器学习和时间序列预测有一个清楚的了解,其中还包括数据分析部分和特征工程的代码操作 阅读建议:大家可以仔细阅读代码部分,其中包括每一步的注释帮助读者进行理解,其中涉及到的知识有数据分析部分和特征工程的代码操作。
import matplotlib.pyplot as plt import numpy as np import pandas as pd from sklearn.model_selection import cross_val_score, TimeSeriesSplit from sklearn.preprocessing import StandardScaler from xgboost import XGBRegressor def timeseries_train_test_split(X, y, test_size): """ Perform train-test split with respect to time series structure """ # get the index after which test set starts test_index = int(len(X) * (1 - test_size)) X_train = X.iloc[:test_index] y_train = y.iloc[:test_index] X_test = X.iloc[test_index:] y_test = y.iloc[test_index:] return X_train, X_test, y_train, y_test def code_mean(data, cat_feature, real_feature): """ cat_feature:类别型特征,如星期几; real_feature:target字段 """ return dict(data.groupby(cat_feature)[real_feature].mean()) def mean_absolute_percentage_error(y_true, y_pred): return np.mean(np.abs((y_true - y_pred) / y_true)) * 100 def plotModelResults(model, X_train, X_test, plot_intervals=False, plot_anomalies=False, scale=1.96): """ Plots modelled vs fact values, prediction intervals and anomalies """ prediction = model.predict(X_test) plt.figure(figsize=(15, 7)) plt.plot(prediction, "g", label="prediction", linewidth=2.0) plt.plot(y_test.values, label="actual", linewidth=2.0) if plot_intervals: cv = cross_val_score(model, X_train, y_train, cv=tscv, scoring="neg_mean_squared_error") # mae = cv.mean() * (-1) deviation = np.sqrt(cv.std()) lower = prediction - (scale * deviation) upper = prediction + (scale * deviation) plt.plot(lower, "r--", label="upper bond / lower bond", alpha=0.5) plt.plot(upper, "r--", alpha=0.5) if plot_anomalies: anomalies = np.array([np.NaN] * len(y_test)) anomalies[y_test < lower] = y_test[y_test < lower] anomalies[y_test > upper] = y_test[y_test > upper] plt.plot(anomalies, "o", markersize=10, label="Anomalies") error = mean_absolute_percentage_error(prediction, y_test) plt.title("Mean absolute percentage error {0:.2f}%".format(error)) plt.legend(loc="best") plt.tight_layout() plt.grid(True); plt.show() def prepareData(series, lag_start, lag_end, test_size, target_encoding=False): """ series: pd.DataFrame dataframe with timeseries lag_start: int initial step back in time to slice target variable example - lag_start = 1 means that the model will see yesterday's values to predict today lag_end: int final step back in time to slice target variable example - lag_end = 4 means that the model will see up to 4 days back in time to predict today test_size: float size of the test dataset after train/test split as percentage of dataset target_encoding: boolean if True - add target averages to the dataset """ # copy of the initial dataset data = pd.DataFrame(series.copy()).loc[:, ['OT']] data.columns = ["y"] # lags of series for i in range(lag_start, lag_end): data["lag_{}".format(i)] = data.y.shift(i) # # datetime features data.index = pd.to_datetime(data.index) data["hour"] = data.index.hour data["weekday"] = data.index.weekday data['is_weekend'] = data.weekday.isin([5, 6]) * 1 if target_encoding: # calculate averages on train set only test_index = int(len(data.dropna()) * (1 - test_size)) data['weekday_average'] = list(map( code_mean(data[:test_index], 'weekday', "y").get, data.weekday)) # frop encoded variables data.drop(["weekday"], axis=1, inplace=True) # train-test split y = data.dropna().y X = data.dropna().drop(['y'], axis=1) X = pd.get_dummies(X) X_train, X_test, y_train, y_test = \ timeseries_train_test_split(X, y, test_size=test_size) return X_train, X_test, y_train, y_test if __name__ == '__main__': """ "XGBoost(机器学习)", """ df = pd.read_csv('ETTh1.csv') df['OT'].fillna(0, inplace=True) df.set_index('date', inplace=True) hp_raw = df[['OT']] tscv = TimeSeriesSplit(n_splits=5) # reserve 30% of data for testing X_train, X_test, y_train, y_test = \ prepareData(hp_raw, lag_start=1, lag_end=28, test_size=0.1, target_encoding=True) scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) X_test_scaled = scaler.transform(X_test) xgb = XGBRegressor() xgb.fit(X_train_scaled, y_train) plotModelResults(xgb, X_train=X_train_scaled, X_test=X_test_scaled, plot_intervals=True, plot_anomalies=True)

资源文件列表:

Xgboost-ETTh1.zip 大约有3个文件
  1. ETTh1.csv 2.47MB
  2. shareXgboost.py 2.74KB
  3. xgboostforecast.py 4.95KB
0评论
提交 加载更多评论
其他资源 2013淘宝双十二红包秒杀器
2013淘宝双十二红包秒杀器
TE田纳西-伊斯曼过程数据集
TE过程控制数据集,其中22个训练集,22个测试集。每个训练集由52个测量信号组成。共480行。每个测试集由52个测量信号组成。共960行。https://blog.csdn.net/LuohenYJ/article/details/78441707
STM32ADC采集波形的识别(正弦波,方波,三角波)
对ADC采集到的数据进行分析,识别波形(正弦波,方波,三角波),通过串口发送识别结果,结构优化的还不太好(就是个种方法堆在一起),个人认为程序思路比较简单。 注意!!!!!!这个方法已经被淘汰了,这种波形识别方法实在是不靠谱,我新上传了一个FFT的波形识别,比这个好多了,这个大家免费下载吧
SMA_Connector.zip
SMA的端口仿真模型,可以使用HFSS打开直接使用,但是需要设置激励方式
npdsplay.dll 修改版支持firefox播放在线mp3
系统明明装有WMP9,打开含有在线播放mp3的网页,Firefox却还要下载安装Quicktime ,岂有此理,上网一搜,果然有此问题。
找到解决办法,将此修改的npdsplay.dll文件拷贝到Mozilla Firefox\plugins目录下即可。
详情请看:http://blog.csdn.net/robotics5/archive/2007/10/17/1829558.aspx
DirectShow Filter : 字幕叠加 (带注释)
DirectShow Transform Filter最典型的例子,带注释,难度不大,学习必备 博客对应文章http://blog.csdn.net/leixiaohua1020/article/details/12498975
管理运筹学配套软件3-5版.zip
管理运筹学配套软件3-5版.zip
苹果手机微信聊天记录备份导出神器:WX Backup、Win版本
微信里积累了数年的聊天记录,连iPhone都吃不消了,可惜你依旧不能删掉它们。 把重要的聊天记录导出来吧,然后你就可以在电脑上好好收藏和品味了。 WX Backup的优点: 1、没有广告,不收费,软件非常简约 2、保存的聊天记录可以跟微信一样打开浏览,可以保存图片、视频、语音、表情、链接分享等 3、支持增量导出,即有新的内容更新到iPhone备份文件后,可以增加更新的内容到导出记录中,不会每次新增记录都要新增一个文件 4、可以搜索聊天记录,可以按月选择聊天记录。 WX Backup操作: 1、iTunes备份:用iTunes连接iPhone,将内容备份到电脑上。请注意,不要选择”给iPhone备份加密“! 2。打开软件选择备份文件夹。根据选择的账号和联系人导出聊天记录,瞬间即可导出选中的聊天记录。支持增量导出,即有新的内容更新到iPhone备份文件后,可以增加更新的内容到导出记录中。

苹果手机微信聊天记录备份导出神器:WX Backup、Win版本 
苹果手机微信聊天记录备份导出神器:WX Backup、Win版本 
苹果手机微信聊天记录备份导出神器:WX Backup、Win版本