我正在尝试使用高斯过程来为某些数据点拟合平滑函数。我在python中使用scikit-learn
库,在我的例子中,我的输入是二维空间坐标,输出是一些变换版本,也是二维空间坐标。我生成了一些虚拟测试数据并尝试将GP模型拟合到它。我使用的代码如下:
from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C
import numpy as np
# Some dummy data
X = np.random.rand(10, 2)
Y = np.sin(X)
# Use the squared exponential kernel
kernel = C(1.0, (1e-3, 1e3)) * RBF(10, (1e-2, 1e2))
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=9)
# Fit to data using Maximum Likelihood Estimation of the parameters
gp.fit(X, Y)
print(X)
# Evaluate on a test point
test = np.random.rand(1, 2)
test[:, 0] = 1.56
test[:, 1] = 0.92
y_pred, sigma = gp.predict(test, return_std=True)
print(test, np.sin(test)) # The true value
print(y_pred, sigma) # The predicted value and the STD
我想知道是否有一种可视化模型拟合的好方法。由于我的输入和输出尺寸都是2-D,我不确定如何快速可视化它以便我了解模型拟合(特别是想知道点之间模型预测的平滑度和方差)。当然,大多数在线示例都是针对一维案例的。
答案 0 :(得分:1)
我认为你需要的是Principal Component Analysis(PCA),这是一种统计技术,可以减少数据集的维度,同时保持它们在高维度与低维度的差异。
在python中:
from sklearn.decomposition import PCA
pca_x=PCA(n_components=1)
X1D=pca.fit_transform(X)
pca_y=PCA(n_components=1)
y1D=pca.fit_transform(y)
plt.plot(X1D,y1D)
n_components = d 其中 d 是所需的缩减尺寸
链接到sklearn中的PCA - > here
替代方案可以是 t-distributed Stochastic Neighbor Embedding ,简称 t-sne ,它也用于可视化高维数据,找到python实现{{3 }}