• 用Python计算点估计预测评价指标(误差指标RMSE、MSE、MAE、MAPE) ,画图展示


    机器学习的回归问题常用RMSE,MSE, MAE,MAPE等评价指标,还有拟合优度R2。由于每次预测出来的预测值再去和原始数据进行误差评价指标的计算很麻烦,所以这里就直接给出他们五个指标的计算函数。把每次预测出来的值和真实值输入这个函数就可以得到上面这些指标,很方便。然后计算出来放一起还可以画柱状图

    先放计算公式:

    mse就是rmse的平方,公式是差不多的。


     Python计算代码:

    1. import numpy as np
    2. import pandas as pd
    3. from sklearn.metrics import mean_absolute_error
    4. from sklearn.metrics import mean_squared_error,r2_score
    5. def evaluation(y_test, y_predict):
    6. mae = mean_absolute_error(y_test, y_predict)
    7. mse = mean_squared_error(y_test, y_predict)
    8. rmse = np.sqrt(mean_squared_error(y_test, y_predict))
    9. mape=(abs(y_predict -y_test)/ y_test).mean()
    10. r_2=r2_score(y_test, y_predict)
    11. return mae, rmse, mape,r_2 #mse

     这个函数就两个参数,一个测试集的真实值,一个预测的预测值,放入就可以计算上面的各种指标了。函数的返回值就是他们的mae,rmse,mape,R2的值。


    画图展示

    df_allmodel用来装不同模型的预测结果,然后计算四个误差指标。

    我这里采用了四个不同的神经网络模型对比,DBN,RNN,CNN,MLP四个模型,df_allmodel每一列就是不同模型的预测结果,行就是不同的样本。

    新建df_eval评价数据框,然后循环每一个模型的预测结果,用上面定义的函数计算评价指标,储存到df_eval里面。

    1. df_eval=pd.DataFrame(columns=['MAE','RMSE','MAPE','R2'])
    2. for i,col in enumerate(df_allmodel.columns):
    3. score=list(evaluation(y_test,np.array(df_allmodel[col])))
    4. df_eval.loc[col,:]=score
    5. df_eval

     然后对df_eval进行画图:

    1. import numpy as np
    2. import pandas as pd
    3. import matplotlib.pyplot as plt
    4. plt.rcParams ['font.sans-serif'] ='SimHei' #显示中文
    5. plt.rcParams ['axes.unicode_minus']=False #显示负号
    6. bar_width = 0.4
    7. fig, ax = plt.subplots(2,2,figsize=(8,5))
    8. for i,col in enumerate(df_eval.columns):
    9. n=int(str('22')+str(i+1))
    10. plt.subplot(n)
    11. df_col=df_eval[col]
    12. m =np.arange(len(df_col))
    13. #hatch=['-','/','+','x'],
    14. plt.bar(x=m,height=df_col.to_numpy(),width=bar_width,color=colors2)
    15. #plt.xlabel('Methods',fontsize=12)
    16. names=df_col.index
    17. plt.xticks(range(0, 4),names,fontsize=14)
    18. if col=='R2':
    19. plt.ylabel(r'$R^{2}$',fontsize=14)
    20. else:
    21. plt.ylabel(col,fontsize=14)
    22. plt.tight_layout()
    23. plt.savefig('柱状图.jpg',dpi=512)
    24. plt.show()

    这里画的是2*2的多子图,每一个小子图就是一个误差指标,x轴就是不同模型,y轴就是误差指标的数值大小。

    就画出来了四个模型在四个误差指标上对比,还是很直观方便。


    PS:有关于区间估计的评价指标的计算 ,可以看我上篇文章:

    (Pandas数据分析33——数据多条件筛选(点估计和区间估计评价指标)_

  • 相关阅读:
    VS Code如何给Python配置虚拟环境
    【多目标进化优化】多目标进化群体的分布性
    【每日练习】第一个只出现一次的字符
    SpringBoot(基础篇 ==> 框架介绍、创建方式
    docker相关命令
    突破限制, 访问其它 Go package 中的私有函数
    BGP选路规则
    [阶段4 企业开发进阶] 3. 消息队列--RabbitMQ
    51单片机送餐机器人快递机器人_ESP8266_APP_WIFI(原理图+PCB+源码)
    中国电竞20年:从小众娱乐到新兴体育产业
  • 原文地址:https://blog.csdn.net/weixin_46277779/article/details/127926269