机器学习将自动化许多人们认为只能由人类完成的工作。”这句话可能是听过的关于机器学习的名言之一。当深入研究机器学习及其应用时,每个人都会意识到这一点。对于初学者来说,可能一开始很难完全理解时间序列分析的概念。但会尽量简化解释。将从一个最近参与的项目的基本理解开始。
任何机器模型的基础都是基于过去获得的数据来预测未来的数据。模型的复杂性取决于需要预测的数据类型。模型的输出范围从简单的房价预测或员工工资预测到复杂的天气预测、太阳辐射预测或销售预测。因此,当输入/输出数据的类型变化时,方法也必须不同。这就是时间序列分析发挥作用的地方。它是一种有效的方法,用于处理复杂的机器学习预测。
时间序列分析是一种在特定时间间隔内分析一系列数据的技术。它通过在一段时间内持续记录数据而不是简单的随机分析来工作。它可以被理解为对特定变量的一系列观察。时间序列分析的主要组成部分包括: 长期趋势 - 描述长期运动; 季节性变化 - 代表季节性变化; 周期性波动 - 对应于周期性和非季节性变化; 不规则变化 - 非随机变化的来源。
时间序列分析本身也有自己的不同类型,基本上是ARIMA、移动平均和指数平滑。构建模型的最重要部分绝对是选择正确的分析或预测类型。
ARIMA
(自回归积分滑动平均)是基于简单自回归滑动平均的概念,但在其上进行积分。ARIMA是一个用于时间序列数据分析或预测未来趋势的统计模型。这些模型通过差分将非平稳序列转换为平稳序列,然后根据之前的数据预测输出。
移动平均模型基于下一个观测值是过去每个观测值的平均值的陈述。它使用以前预测误差的概念,而不是直接使用回归中的前一个值。移动平均模型始终是平稳的。
指数平滑是一种用于单变量数据的预测方法。它可以帮助支持具有季节性成分的数据。此外,它是一种强大的方法,可以作为流行的ARIMA的替代品。它比旧数据更多地考虑最近的数据。因此,模型可能更有效。
Dogecoin是一种数字货币,是一种通过计算机网络交换货币的媒介,不受任何政府组织的管辖。Dogecoin是一种开源的数字货币,是一种货币单位,但没有现实世界的用途。它是由Billy Markus和Jackson Palmer创建的,他们都是软件工程师,他们决定创建这个支付系统作为一个“笑话”,调侃当时存在的数字货币投机。
在当前日期——2022年11月3日——1 Dogecoin = 8.85印度卢比,价值已经崩溃。Dogecoin也被称为第一个“梗币”。
下面讨论的项目是关于使用时间序列分析数据构建的机器学习模型来预测未来的Dogecoin价值。
让通过实现来了解。对于这个项目,使用Dogecoin历史数据,其中包含2017年11月至2022年1月Dogecoin的开盘、最高、最低和收盘价。有了这些数据,可以预测Dogecoin的每日未来价格。
首先,让导入项目所需的所有库。
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.ensemble import RandomForestRegressor
import warnings
warnings.filterwarnings("ignore")
让导入Dogecoin历史数据集。
data = pd.read_csv("DOGE-USD.csv")
data.head()
现在,检查数据中是否有任何空值。
data.isnull().any()
输出显示没有空值。
在数据集中,只对每天的Dogecoin收盘价感兴趣,以进行时间序列分析。因此,取收盘价作为X。
X = data['Close']
X = np.array(X).reshape(-1,1)
现在让绘制Dogecoin收盘价的趋势。
plt.plot(X)
可以注意到Dogecoin每日收盘价的波动。
对于时间序列分析,需要从给定的X创建一个数据集。因此,在这里为了制作数据集,考虑i到i+N的数据作为输入数据,i+N+1的数据作为输出数据,其中i的范围是从0到数据总长度-N。
x_data = []
y_data = []
column_len = 25
for i in range(len(X)-column_len-1):
x_data.append(X[i:i+column_len,0])
y_data.append(X[i+column_len,0])
x_data = np.array(x_data)
y_data = np.array(y_data)
准备了输入和输出数据,现在可以创建机器学习模型了。使用RandomForestRegressor创建模型。让用数据集训练模型。
model = RandomForestRegressor(n_estimators=200)
model.fit(x_data, y_data)
模型现在已经准备好用于预测未来的Dogecoin价格。