在R中使用高斯过程生成函数数据

模型:

X(t) = 4*t + e(t); t € [0; 1]

e(t) 是一个均值为零且协方差函数为 f(s, t) = exp( -|t - s| ) 的高斯过程

经过100次运行(=100条灰色线),每条线有50个采样点,最终结果应如图中的灰色区域所示。

绿色线条是我从下面的代码中得到的。

library(MASS)kernel_1 <- function(x, y){    exp(- abs(x - y))}cov_matrix <- function(x, kernel_fn, ...) {    outer(x, x, function(a, b) kernel_fn(a, b, ...))}draw_samples <- function(x, N=1, kernel_fn, ...) {    set.seed(100)    Y <- matrix(NA, nrow = length(x), ncol = N)    for (n in 1:N) {        K <- cov_matrix(x, kernel_fn, ...)        Y[, n] <- mvrnorm(1, mu = rep(0, times = length(x)), Sigma = K)    }    Y}x <- seq(0, 1, length.out = 51)  # x-coordinatesmodel1 <- function(obs, x) {    model1_data <- matrix(NA, nrow = obs, ncol = length(x))    for(i in 1:obs){        e <- draw_samples(x, 1, kernel_fn = kernel_1)        X <- c()        for (p in 1:length(x)){            t <- x[p]            val <- (4*t) + e[p,]            X = c(X, val)        }        model1_data[i,] <- X  }    model1_data}# model1(100, x)

enter image description hereenter image description here


回答:

因为你在 draw_samples 中使用了 set.seed,每次抽样都会得到相同的随机数。如果你删除它,你可以这样做:

a <- model1(100, x)matplot(t(a), type = "l", col = 'gray')

来得到

enter image description here

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注