高斯过程(Gaussian Process。GP)是概率论和数理统计中随机过程(stochastic process)的一种,是一系列服从正态分布的随机变量(random variable)在一指数集(index set)内的组合。
高斯过程中任虚散意随机变量的线性组合都服从正态分布,每个有限维分布都是联合正态分布,且其本身在连续指数集上的概率密度函数即是所有随机变量的高斯测度,因此被视为联合正态雀州分布的无限维广义延伸。高斯过程由其数学顷誉蔽期望和协方差函数完全决定,并继承了正态分布的诸多性质。
高斯过程的例子
高斯过程的例子包括维纳过程、奥恩斯坦-乌伦贝克过程等。
对高斯过程进行建模和预测是机器学习、信号处理等领域的重要内容,其中常见的模型包括高斯过程回归(Gaussian Process Regression,GPR)和高斯过程分类(Gaussian Process Classification,GPC)。
高斯过程的命名来自德国数学家卡尔·弗里德里希·高斯(Carl Friedrich Gauss)以纪念其提出正态分布概念。
26、高斯过程分类中的等概率线
import numpy as np
from matplotlib import pyplot as plt
from matplotlib import cm
from sklearn.gaussian_process import GaussianProcessClassifier
from sklearn.gaussian_process.kernels import DotProduct, ConstantKernel as C
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 几个常数
lim = 8
def g(x):
扰数好 return 5.0 - x[:, 1] - 0.5 * x[:, 0] ** 2.0
# 实验设计
X = np.array(
[
[-4.61611719, -6.00099547],
[4.10469096, 5.32782448],
[0.00000000, -0.50000000],
[-6.17289014, -4.6984743],
[1.3109306, -6.93271427],
毕塌 [-5.03823144, 3.10584743],
[-2.87600388, 6.74310541],
[5.21301203, 4.26386883],
]
)
# 观察
y = np.array(g(X) >0, dtype=int)
# 实例化和拟合高斯过程模型
kernel = C(0.1, (1e-5, np.inf)) * DotProduct(sigma_0=0.1) ** 2
gp = GaussianProcessClassifier(kernel=kernel)
gp.fit(X, y)
print("Learned kernel: %s " % gp.kernel_)
#求实函数与预测概率
res = 50
x1, x2 = np.meshgrid(np.linspace(-lim, lim, res), np.linspace(-lim, lim, res))
xx = np.vstack([x1.reshape(x1.size), x2.reshape(x2.size)]).T
y_true = g(xx)
y_prob = gp.predict_proba(xx)[:, 1]
y_true = y_true.reshape((res, res))
y_prob = y_prob.reshape((res, res))
# 绘制概率分类等值缓铅
fig = plt.figure(1)
ax = fig.gca()
ax.axes.set_aspect("equal")
plt.xticks([])
plt.yticks([])
ax.set_xticklabels([])
ax.set_yticklabels([])
plt.xlabel("$x_1$")
plt.ylabel("$x_2$")
cax = plt.imshow(y_prob, cmap=cm.gray_r, alpha=0.8, extent=(-lim, lim, -lim, lim))
norm = plt.matplotlib.colors.Normalize(vmin=0.0, vmax=0.9)
cb = plt.colorbar(cax, ticks=[0.0, 0.2, 0.4, 0.6, 0.8, 1.0], norm=norm)
cb.set_label(r"${\rm \mathbb{P}}\left[\widehat{G}(\mathbf{x}) \leq 0\right]$")
plt.clim(0, 1)
plt.plot(X[y <= 0, 0], X[y <= 0, 1], "r.", markersize=12)
plt.plot(X[y >0, 0], X[y >0, 1], "b.", markersize=12)
plt.contour(x1, x2, y_true, [0.0], colors="k", linestyles="dashdot")
cs = plt.contour(x1, x2, y_prob, [0.666], colors="b", linestyles="solid")
plt.clabel(cs, fontsize=11)
cs = plt.contour(x1, x2, y_prob, [0.5], colors="m", linestyles="dashed")
plt.clabel(cs, fontsize=11)
cs = plt.contour(x1, x2, y_prob, [0.334], colors="r", linestyles="solid")
plt.clabel(cs, fontsize=11)
plt.title("高斯过程分类中的等概率线")
plt.show()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)