Ошибка несоответствия вектора регрессионного гребня для MSE - PullRequest
0 голосов
/ 31 мая 2018

Я новичок в R и пытаюсь выполнить регрессию гребня на тестовых и обучающих данных, но это вызывает ошибку при вычислении MSE.У меня есть один набор данных, который имеет 2 int и 9 «num» переменных.Я опускаю "num" при выполнении регрессии.Это мой подход:

  1. разбиение данных на основе того, имеет ли одно из полей значение 0 или 1. 1 будет указывать свои тренировочные данные, а 0 - это тестовые данные.
  2. создание векторов для тестовых и обучающих данных
  3. применение регрессии гребня с помощью 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
####
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...