📅  最后修改于: 2020-12-10 06:24:18             🧑  作者: Mango
单纯的方法(例如,假设在时间“ t”处的预测值是时间在“ t-1”处变量的实际值或序列的滚动平均值)用于衡量统计模型和机器学习模型的性能并强调他们的需求。
在本章中,让我们在时间序列数据的功能之一上尝试这些模型。
首先,我们将看到数据“温度”特征的均值及其周围的偏差。查看最大和最小温度值也很有用。我们可以在这里使用numpy库的功能。
在[135]中:
import numpy
print (
'Mean: ',numpy.mean(df['T']), ';
Standard Deviation: ',numpy.std(df['T']),';
\nMaximum Temperature: ',max(df['T']),';
Minimum Temperature: ',min(df['T'])
)
我们拥有等距时间轴上所有9357个观测值的统计信息,这对于我们理解数据很有用。
现在,我们将尝试第一种天真的方法,将当前的预测值设置为与先前的实际值相等,并为其计算均方根误差(RMSE),以量化该方法的性能。
在[136]中:
df['T']
df['T_t-1'] = df['T'].shift(1)
在[137]中:
df_naive = df[['T','T_t-1']][1:]
在[138]中:
from sklearn import metrics
from math import sqrt
true = df_naive['T']
prediction = df_naive['T_t-1']
error = sqrt(metrics.mean_squared_error(true,prediction))
print ('RMSE for Naive Method 1: ', error)
原始方法1的RMSE:12.901140576492974
让我们看看下一个朴素的方法,其中当前时间的预测值等于它之前的时间段的平均值。我们还将为此方法计算RMSE。
在[139]中:
df['T_rm'] = df['T'].rolling(3).mean().shift(1)
df_naive = df[['T','T_rm']].dropna()
在[140]中:
true = df_naive['T']
prediction = df_naive['T_rm']
error = sqrt(metrics.mean_squared_error(true,prediction))
print ('RMSE for Naive Method 2: ', error)
原始方法2的RMSE:14.957633272839242
在这里,您可以尝试各种数量的先前时间段,也就是您要考虑的“滞后时间”,此处保持为3。从该数据可以看出,随着滞后次数的增加和误差的增加。如果将滞后保持为1,它将与之前使用的朴素方法相同。
注意事项
您可以编写一个非常简单的函数来计算均方根误差。在这里,我们使用了软件包“ sklearn”中的均方误差函数,然后取其平方根。
在熊猫中,df [‘column_name’]也可以写为df.column_name,但是对于此数据集df.T不能与df [‘T’]相同,因为df.T是用于转置数据帧的函数。因此,仅使用df [‘T’]或考虑在使用其他语法之前重命名此列。