Я новичок в R и пытаюсь выполнить регрессию гребня на тестовых и обучающих данных, но это вызывает ошибку при вычислении MSE.У меня есть один набор данных, который имеет 2 int и 9 «num» переменных.Я опускаю "num" при выполнении регрессии.Это мой подход:
- разбиение данных на основе того, имеет ли одно из полей значение 0 или 1. 1 будет указывать свои тренировочные данные, а 0 - это тестовые данные.
- создание векторов для тестовых и обучающих данных
- применение регрессии гребня с помощью cv и прогнозирование по тестовым данным.
Я путаюсь с векторами.Я думаю, что именно здесь я делаю ошибку.
Вот мой код.
# importing the dataset
allt2= read.csv("/Users/Documents/My R/Project/allinonever1_1.csv")
dim(allt2)
16779 11
# if Train = 1 then the row is training set else test
trainv= subset (allt2, Train==1)
testv = subset (allt2, Train==0)
dim(trainv)
5549 11
dim(testv)
11230 11
library(glmnet)
grid=10^seq(10,2,length=100)
#creating x,y ventors for train and test
train_x=model.matrix(logrm~.,-1, data =trainv)
train_y= trainv$logrm
dim(train_x)
5549 11
dim(train_y)
NULL
test_x=model.matrix(logrm~.,-1, data = subset(allt2, testv))
test_y= allt2$logrm
dim(test_x)
# cv and getting best lambda
cv.ridge = cv.glmnet(train_x, train_y, alpha=0)
bestlam = cv.ridge$lambda.min
bestlam
#ridge regression on train data and prediction on test data using bestlam
ridge.mod=glmnet(train_x,train_y,alpha=0,lambda=grid,thresh=1e-12)
ridge.pred = predict(ridge.mod, s=bestlam, newx = test_x)
summary(ridge.pred)
mean((ridge.pred-test_y)^2)
###
Error in mean((ridge.pred - test_y)^2) :
dims [product 5549] do not match the length of object [16779]
In addition: Warning message:
In ridge.pred - test_y :
longer object length is not a multiple of shorter object length
####