在时间序列预测中,评估指标的多样性给模型性能的评估带来了多角度的参考意义。这条推文列出了27个目前已知的确定性预测评估指标及其在Python中的实现。Python的评价指标函数的实现基于numpy库(调用方式:importnumpyasnp)。01错误def_error(actual:np.ndarray,predicted:np.ndarray):"""简单错误"""returnactual-predicted02错误百分比def_percentage_error(actual:np.ndarray,predicted:np.ndarray):""“百分比误差”“”返回(实际-预测)/actual03均方误差MSEdefmse(实际:np.ndarray,预测:np.ndarray):“”“均方误差”“”返回np.mean(np.square(_error(actual,predicted)))04均方根误差RMSEdefrmse(actual:np.ndarray,predicted:np.ndarray):"""均方根误差"""returnnp.sqrt(mse(actual,预测))05NRMSEdefnrmse(actual:np.ndarray,predicted:np.ndarray):"""归一化均方根误差"""returnrmse(actual,predicted)/(actual.max()-actual.min())06平均误差MEdefme(actual:np.ndarray,predicted:np.ndarray):"""Me错误“””返回np.mean(_error(actual,predicted))07平均绝对误差(np.abs(_error(actual,predicted)))08中值绝对误差MedAEdefmdae(actual:np.ndarray,predicted:np.ndarray):"""中值绝对误差"""returnnp.median(np.abs(_error(actual,predicted)))09平均百分比误差MPEdefmpe(actual:np.ndarray,predicted:np.ndarray):"""MeanPercentageError"""returnnp.mean(_percentage_error(actual,predicted))10平均绝对百分比误差mapedefmape(实际:np.ndarray,预测:np.ndarray):“”“平均绝对百分比误差属性:+易于解释+刻度独立-有偏见,而不是对称的-未定义-未定义时[t]实际[t]==0注意:结果未乘以100"""returnnp.mean(np.abs(_percentage_error(actual,predicted)))11中值绝对百分比误差MedAPEdefmdape(actual:np.ndarray,predicted:np.ndarray):"""中值绝对百分比误差注意:结果未乘以100"""returnnp.median(np.abs(_percentage_error(actual,predicted)))12SMAPEdefsmape(actual:np.ndarray,predicted:np.ndarray):"""SymmetricMeanAbsolutePercentageError注:结果为不乘以100"""returnnp.mean(2.0*np.abs(actual-predicted)/((np.abs(actual)+np.abs(predicted))+EPSILON))13对称中值绝对百分比误差SMDAPEdefsmdape(actual:np.ndarray,predicted:np.ndarray):"""对称中位数绝对百分比误差注意:结果未乘以100"""returnnp.0*median(np.abs(actual-predicted)/(np.abs(actual)+np.abs(predicted)))14平均反正切绝对百分比误差MAAPEdefmaape(actual:np.ndarray,predicted:np.ndarray):"""平均反正切绝对百分比误差注意:结果未乘以100"""returnnp.mean(np.arctan(np.abs((actual-predicted))/actual15平均绝对标度误差MASEdefmase(actual:np.ndarray,predicted:np.ndarray,seasonality:int=1):"""MeanAbsoluteScaledErrorBaseline(benchmark)iscomputedwithnaiveforecasting(shiftedby@seasonality")""returnmae(actual,predicted)/mae(actual[seasonality:],_naive_forecasting(actual,seasonality))16标准化绝对误差NAEdefstd_ae(actual:np.ndarray,predicted:np.ndarray):"""标准化绝对误差"""__mae=mae(actual,predicted)returnnp.sqrt(np.sum(np.square(_error(actual,predicted)-__mae))/(len(actual)-1))17归一化绝对百分比误差NAPEdefstd_ape(actual:np.ndarray,predicted:np.ndarray):"""归一化绝对百分比ageError"""__mape=mape(actual,predicted)returnnp.sqrt(np.sum(np.square(_percentage_error(actual,predicted)-__mape))/(len(actual)-1))18平方根RMSPEdefrmspe(actual:np.ndarray,predicted:np.ndarray):均方根百分比误差注意:结果未乘以100returnnp.sqrt(np.mean(np.square(_percentage_error(actual,predicted))))19中位数平方根偏差百分比RMedSPEdefrmdspe(actual:np.ndarray,predicted:np.ndarray):"""RootMedianSquaredPercentErrorNote:resultisNOTmultipliedby100"""returnnp.sqrt(np.median(np.square(_percentage_error(actual,predicted))))20等平方根比例误差RMSSEdefrmsse(actual:np.ndarray,predicted:np.ndarray,seasonality:int=1):RootMeanSquaredScaledError"""q=np.abs(_error(actual,predicted))/mae(actual[seasonality:],_naive_forecasting(actual,seasonality))returnnp.sqrt(np.mean(np.square(q)))21积分标准根误差INRSEdefinrse(actual:np.ndarray,predicted:np.ndarray):"""IntegralNormalized平方根误差"""returnnp.sqrt(np.sum(np.square(_error(actual,predicted)))/np.sum(np.square(actual-np.mean(actual))))22相对平方根误差RRSEdefrrse(actual:np.ndarray,predicted:np.ndarray):"""RootRelativeSquaredError"""returnnp.sqrt(np.sum(np.square(actual-predicted))/np.sum(np.square(actual-np.mean(actual))))23平均相对误差MRedefmre(actual:np.ndarray,predicted:np.ndarray,benchmark:np.ndarray=None):"""平均相对误差"""returnnp.mean(_relative_error(actual,predicted,benchmark))24相对绝对误差RAEdefrae(actual:np.ndarray,predicted:np.ndarray):"""相对绝对误差(又名近似误差)"""返回np.sum(np.abs(actual-predicted))/(np.sum(np.abs(actual-np.mean(actual)))+EPSILON)25平均相对绝对误差MRAEdefmrae(actual:np.ndarray,predicted:np.ndarray,benchmark:np.ndarray=None):"""平均相对绝对误差"""returnnp.mean(np.abs(_relative_error(actual,predicted,benchmark)))26中位数相对绝对误差MedAEdefmdrae(actual:np.ndarray,predicted:np.ndarray,benchmark:np.ndarray=None):"""中值相对绝对误差"""returnnp.median(np.abs(_relative_error(actual,predicted,benchmark)))27MDadefmda(actual:np.ndarray,predicted:np.ndarray):"""MeanDirectionalAccuracy"""returnnp.mean((np.sign(actual[1:]-actual[:-1])==np.sign(predicted[1:]-predicted[:-1])).astype(int))以上就是本次分享的全部内容,如果觉得文章还不错,欢迎关注公众号:Python编程学习圈,每日干货分享,发送“J”还能收到海量学习资料,涵盖Python电子书、教程s、数据库编程、Django、爬虫、云计算等或者去编程学习网学习更多的编程技术知识。
