[ 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.plot
與plt.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數據科學手冊》