我在VAR模型时间序列中得到的准确性为0。如何使用Python检查时间序列的预测准确性?
print("df_results['Field1_f']", df_results['Field1_f'])print("df_test['Field1']", df_test['Field1']) print("accuracy:") print(accuracy_score(df_test['Field1'], df_results['Field1_f']))
请参考以下输出。
df_results['Field1_f'] 179 1792622180 1794414181 1670866182 1842468183 1793253184 1647436185 1944522186 1857092187 1744014188 1742659Name: Field1_f, dtype: int32df_test['Field1'] 189 1750000190 1970000191 1537000192 1400000193 1890100194 1970000195 1770000196 1729000197 1940000198 2150000Name: Field1, dtype: int64accuracy:0.0
回答:
假设你使用的是scikit-learn中的accuracy_score
,这里它不是正确的度量标准;准确性适用于分类问题,而不是像预测问题这样的数值预测问题。从文档中可以看到:
准确性分类得分。
预测问题最常见的误差度量指标是MSE、RMSE和MAE;它们都在scikit-learn的“回归”部分中可以找到,这里:
from sklearn.metrics import mean_squared_error, mean_absolute_errormean_squared_error(df_test['Field1'], df_results['Field1_f']) # MSEmean_squared_error(df_test['Field1'], df_results['Field1_f'], squared=False) # RMSEmean_absolute_error(df_test['Field1'], df_results['Field1_f']) # MAE
请记住,在机器学习的背景下,“准确性”这个术语与其日常用法并不完全相同;在机器学习中,它通常指的是分类准确性,如前所述,这仅适用于分类问题 – 不过,老实说,在预测中,这个术语确实是以其日常含义使用的…