[Python3] Matplotlib —— (四) 可視化異常處理


[ Matplotlib version: 3.1.3 ]


五、可視化異常處理

對任何一種科學測量方法來說,準確地衡量數據誤差比數據本身更重要。在數據可視化的結果中用圖形將誤差有效地顯示出來,就可以提供更充分的信息。

(一)基本誤差線

基本誤差線(errorbar)可以通過一個Matplotlib函數創建。

  • fmt是一種控制線條和點的外觀的代碼格式,語法與plt.plot的縮寫代碼相同
  • errorbar有許多改善結果的選項,通過這些額外選項,可以輕鬆自定義誤差線圖形的繪畫風格
  • 讓誤差線的顏色比數據點的顏色淺一點效果會很好,尤其是比較密集的圖形中
  • 還可以設置水平方向的誤差線(xerr),單側誤差線(one-sided errorbar)及其他形式誤差線
%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-whitegrid')
import numpy as np

x = np.linspace(0, 10, 50)
dy = 0.8
y = np.sin(x) + dy * np.random.randn(50)

# 誤差線
plt.errorbar(x, y, yerr=dy, fmt='.k')

在這裏插入圖片描述

# 自定義誤差線
plt.errorbar(x, y, yerr=dy, fmt='o', color='black',
             ecolor='lightgray', elinewidth=3, capsize=0)

在這裏插入圖片描述

(二)連續誤差

需要顯示連續變量的誤差,通過plt.plotplt.fill_between來解決。

from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C

# 定義模型和要畫的數據
model = lambda x: x * np.sin(x)
xdata = np.array([1, 3, 5, 6, 8])
ydata = model(xdata)

# 計算高斯過程擬合結果
kernel = C(1.0, (1e-3, 1e3)) * RBF(10, (1e-2, 1e2))
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=9)
gp.fit(xdata[:, np.newaxis], ydata)

xfit = np.linspace(0, 10, 1000)
yfit, sigma = gp.predict(xfit[:, np.newaxis], return_std=True)
dyfit = 2 * np.sqrt(sigma)  # 2*sigma~95%置信區間

# 將結果可視化
plt.plot(xdata, ydata, 'or')
plt.plot(xfit, yfit, '-', color='gray')

plt.fill_between(xfit, yfit - dyfit, yfit + dyfit,
                color='gray', alpha=0.2)
plt.xlim(0, 10)

在這裏插入圖片描述

  • 從結果圖形中可以直觀看出高斯過程迴歸方法擬合的效果:在接近樣本點的區域,模型受到很強的約束,擬合誤差非常小,非常接近真實值,而在遠離樣本點的區域,模型不受約束,誤差不斷增大。

Matplotlib 相關閱讀:

[Python3] Matplotlib —— (一) 入門基礎
[Python3] Matplotlib —— (二) 簡易線形圖
[Python3] Matplotlib —— (三) 簡易散點圖


總結自《Python數據科學手冊》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章