set.seed(0)
n_samples <- 500
n_features <- 40
X <- matrix(rnorm(n_features * n_samples), nrow = n_samples)
y <- 2 * X[,1] - 3 * X[,2] + rnorm(n_samples) # only features 1 & 2 are relevant
X_train <- X[1:400,]
y_train <- y[1:400]
X_test <- X[401:500,]
y_test <- y[401:500]
# START ------------------------------------------------------------------------
# first, standardize data !!!
X_train <- scale(X_train)
tmp00 <- bayesCL::lasso(X = X_train,
y = y_train,
T = 500, # number of Gibbs sampling iterations
icept = T,
device=0 ) # use constant term (intercept), we do
#scale test data based on train data means and scales!!
X_test <- scale(X_test,
center = attr(X_train, "scaled:center"),
scale = attr(X_train, "scaled:scale"))
p_train1 <- colMeans(tmp00$beta %*% t(X_train))
p_test1 <- colMeans(tmp00$beta %*% t(X_test))
plot(y_train, p_train1, col = "red", xlab = "actual", ylab = "predicted")
points(y_test, p_test1, col = "green")
Run the code above in your browser using DataLab