什么是误差图?今天带你了解可视化误差图,让数据一目了然

大数据
这是Python数据可视化的系列短篇,针对初级和中级用户,将理论和示例代码相结合,使用matplotlib, seaborn, plotly等工具创建不同主题的图表。

前言

这是Python数据可视化的系列短篇,针对初级和中级用户,将理论和示例代码相结合,使用matplotlib, seaborn, plotly等工具创建不同主题的图表。

本文主题是如何在图表中显示误差。

  1. import os 
  2.  
  3. import warnings 
  4. import requests 
  5. import numpy as np 
  6. import pandas as pd 
  7. import matplotlib.pyplot as plt 
  8. from statsmodels.tsa.arima_model import ARIMA 
  9.  
  10. %matplotlib inline 
  11. plt.style.use("fivethirtyeight"
  12.  
  13. warnings.filterwarnings("ignore"

1. 显示测量误差

科学测量往往存在误差,准确的报告误差跟报告测量结果同样重要。

测量误差(也称为观察误差)是测量值和真实值之间的差异,包括随机误差(任何实验中都会自然发生的误差)和系统误差(由影响所有测量的错误校准的仪器引起)。

举一个例子,假设您正在测量100个学生的体重,有的学生穿较多的衣服,导致重500克,有的学生可能脱水导致轻200克,这些都是测量误差。事实上所有收集的样本都会存在误差,大多数情况下它们不可避免。所以在数据可视化中,有效显示这些错误可以传达更完整的信息。

在matplotlib中通过调用ax.errorbar()创建误差图(errorbar)。误差图由一个点和穿过这个点的线段组成,点对应测量结果,线段代表测量误差。

  1. # 设置随机数种子 
  2. np.random.seed(123) 
  3.  
  4. # 观测值的数量 
  5. n_observations = 30 
  6. x = np.arange(n_observations) 
  7.  
  8. # 虚拟测量值 
  9. y = np.sin(x) + np.random.randn(n_observations) 
  10.  
  11. # 测量误差,假设误差服从均匀分布 
  12. errors = np.random.randint(1, 3, n_observations) 
  13.  
  14. # 调用ax.errorbar接口,提供3个数组,x, y, yerr 
  15. # fmt控制点和线段的样式,跟ax.plot的fmt相同 
  16. # color: 控制点的颜色 
  17. # ecolor: 代表误差的线段的颜色 
  18. # elinewidth: 代表误差的线段的大小 
  19. fig, ax = plt.subplots(figsize=(10, 7)) 
  20. ax.errorbar(x, y, yerr=errors, fmt="o", color="black"
  21.             ecolor="lightgray", elinewidth=3) 

2. 显示预测误差

在机器学习领域,回归模型和时间序列模型用于预测,模型会同时生成预测误差(所谓置信区间),在可视化预测结果时,通常要求显示预测值和预测区间,这可以通过ax.plot()和ax.fill_between()实现。

接下来使用一个真实的案例说明,先从蜂鸟数据获取黄金价格,然后用ARIMA(自回归整合移动平均)预测未来30天的价格,可视化预测结果。

  1. # 从蜂鸟数据下载黄金价格 
  2. params = { 
  3.     "symbol""XAUUSD",  # 现货黄金ID 
  4.     "start_date""2010-01-01"
  5.     "end_date""2020-08-05"
  6.     "apikey": os.getenv("TROCHIL_API")  # 在蜂鸟数据官网注册获取API密钥 
  7. resp = requests.get("https://api.trochil.cn/v1/forex/history", params) 
  8. data = pd.DataFrame.from_records(resp.json()["data"]) 
  9. data["datetime"] = pd.to_datetime(data["datetime"]) 
  10. data.set_index("datetime", inplace=True
  11.  
  12. # 创建ARMIA模型,预测未来30天价格走势 
  13. model = ARIMA(data.closeorder=(1, 1, 1)) 
  14. results = model.fit() 
  15. fc, errors, conf = results.forecast(steps=30, alpha=0.05) 
  16. fc_df = pd.DataFrame({ 
  17.     "forecast": fc, 
  18.     "lower": conf[:, 0], 
  19.     "upper": conf[:, 1] 
  20. }, index=pd.date_range("2020-08-06", periods=30)) 
  21.  
  22. # 可视化预测结果,包括点预测值和预测区间 
  23. # 预测区间包括置信下限和上限,代表真实值可能落入的范围 
  24. # 调用ax.plot显示点预测值,ax.fill_between显示预测区间 
  25. data_since_2020 = data["2020":] 
  26. fig, ax = plt.subplots(figsize=(12, 7)) 
  27. data_since_2020.close.plot(ax=ax, label="Historical Prices"
  28. ax.plot(fc_df.index, fc_df.forecast, label="Forecast Prices"
  29. ax.fill_between(fc_df.index, fc_df.lower, fc_df.upper, color="gray", alpha=0.3, label="Forecast Interval"
  30. ax.set_title("Plot Forecast Errors"
  31. ax.legend(loc="upper left"
  32. <matplotlib.legend.Legend at 0x7fbfa348d9a0> 

 

责任编辑:未丽燕 来源: 今日头条
相关推荐

2023-10-07 09:34:03

数据可视化

2023-11-10 08:56:49

Springboot常用的注解

2009-11-24 18:20:16

曙光Gridview管理

2023-09-14 10:42:46

SQL数据库

2015-03-22 06:25:23

监控宝云智慧

2010-03-10 09:06:58

Windows 7启动时间

2010-01-26 08:58:17

Windows 7启动时间

2022-11-28 15:04:42

数据可视化工具

2020-04-17 15:03:28

动图Git命令

2009-09-28 16:39:37

2016-03-04 10:51:51

数据可视化数据抓取

2015-07-03 09:41:05

脚本编程编程语言比较

2020-09-27 09:41:04

代码开发注释

2024-05-15 08:00:38

PostgreSQL日志Trace

2012-04-25 09:17:41

Google DrivMicrosoft SDropbox

2020-12-30 10:28:49

Windows 功能系统

2022-07-05 15:11:42

Python数据可视化机器学习

2021-01-12 16:28:41

5G运营商韩国

2021-12-14 05:57:42

微软Edge浏览器

2014-08-21 11:12:01

QQ浏览器
点赞
收藏

51CTO技术栈公众号