2015-08-12 3 views
0

Я хотел бы использовать пакет glmnet для проекта классификации. Мне удалось создать модель и получить предикат за строку, но я не вижу способа использовать ее как регулярную переменную. Как добавить вектор прогнозирования в кадр данных как обычный столбец, с которым я смогу работать (например, рассчитать его значение и т. Д.). Вот мой кадр данных и код игрушки. Также я вижу, что glmnet, называемый вектор прогнозирования как «1», почему это так, как я могу его изменить?Как добавить вектор прогнозирования glmnet в dataframe как обычный столбец

df <- read.table(text = "target birds wolfs  
        1  9   7 
        1  8   4 
        0  2   8 
        1  2   3 
        1  8   3 
        0  1   2 
        1  7   1 
        0  1   5 
        1  9   7 
        1  8   7 
        0  2   7 
        0  2   3 
        1  6   3 
        0  1   1 
        0  3   9 
        0  1   1 ",header = TRUE) 
library(Matrix) 
some_matrix <- data.matrix(df[,2:3]) 
Matrix(some_matrix, sparse=TRUE) 
set.seed(2) 
split <- df[1:10,] 
split <- NULL 
train <- df[1:10,] 
test<-df[11:16,] 
train_sparse <- sparse.model.matrix(~.,train[2:3]) 
test_sparse <- sparse.model.matrix(~.,test[2:3]) 
library(glmnet) 
fit <- glmnet(train_sparse,train[,1],family='binomial') 
cv <- cv.glmnet(train_sparse,train[,1],nfolds=3) 
pred <- predict(fit, test_sparse,type="response", s=cv$lambda.min) 
pred 
      1 
11 0.09691107 
12 0.82760730 
13 1.00000000 
14 0.26871408 
15 0.58367863 
16 0.26871408 
c<-cbind(test,pred) 
target birds wolfs   1 
11  0  2  7 0.09691107 
12  0  2  3 0.82760730 
13  1  6  3 1.00000000 
14  0  1  1 0.26871408 
15  0  3  9 0.58367863 
16  0  1  1 0.26871408 
typeof(c$1) 
Error: unexpected numeric constant in "typeof(c$1" 
mean(c$1) 
Error: unexpected numeric constant in "mean(c$1" 

> str(c) 
'data.frame': 6 obs. of 5 variables: 
$ target: int 0 0 1 0 0 0 
$ birds : int 2 2 6 1 3 1 
$ wolfs : int 7 3 3 1 9 1 
$ 1  : num 0.0969 0.8276 1 0.2687 0.5837 ... 
$ pred : num [1:6, 1] 0.0969 0.8276 1 0.2687 0.5837 ... 
    ..- attr(*, "dimnames")=List of 2 
    .. ..$ : chr "11" "12" "13" "14" ... 
    .. ..$ : chr "1" 

ответ

1
df <- read.table(text = "target birds wolfs  
        1  9   7 
        1  8   4 
        0  2   8 
        1  2   3 
        1  8   3 
        0  1   2 
        1  7   1 
        0  1   5 
        1  9   7 
        1  8   7 
        0  2   7 
        0  2   3 
        1  6   3 
        0  1   1 
        0  3   9 
        0  1   1 ",header = TRUE) 
set.seed(44) 

library(Matrix) 
library(glmnet) 
some_matrix <- data.matrix(df[,2:3]) 
Matrix(some_matrix, sparse=TRUE) 
set.seed(2) 
split <- df[1:10,] 
split <- NULL 
train <- df[1:10,] 
test<-df[11:16,] 
train_sparse <- model.matrix(~.,train[2:3]) #changed to model.matrix 
test_sparse <- model.matrix(~.,test[2:3]) 
library(glmnet) 
fit <- glmnet(train_sparse,train[,1],family='binomial') 
cv <- cv.glmnet(train_sparse,train[,1],nfolds=3) # i believe you can do all of the modeling in here. You should skip the "fit" part. 
pred <- predict(fit, test_sparse,type="response", s=cv$lambda.min) 

test_sparse<-as.data.frame(test_sparse[,-1]) #removing intercept 
test_sparse$predictionColumn<-c(pred) #adding in new column 
+0

Извините @Jason но я попробовал все варианты без success.Also, я предполагаю, что вы имели в виду «с» вместо «ДФ», верно? – mql4beginner

+0

Извинения, я торопился добраться до спортзала. Я обновил. – Jason

+0

Большое спасибо @jason ... Надеюсь, что вам понравилось в спортзале -) – mql4beginner

Смежные вопросы