R-Caret - как сохранить модель - PullRequest
0 голосов
/ 09 января 2020

Я использую R с пакетом caret для создания прогнозной модели. Я довольно доволен своей моделью и хотел бы сохранить ее для ежедневного запуска.

К сожалению, я очень плохо знаком с R и не знаю, как это сделать.

Не могли бы вы мне помочь? Спасибо!

Вот код, который я использую:

library(caret)
library(e1071)
library(data.table)
library(pracma)

mydata<-read.csv("C:/test1.txt", header=T , sep="\t")
setDT(mydata)

mydata[,mmc:=movavg(mydata$a2,2)]
mydata[,mml:=movavg(mydata$a2,5)]

mydata[, y:=shift(a2, 4, type="lead", fill=mydata$a2[length(mydata$a2)])]

training<-mydata[296:4198,]
testing<-mydata[4199:length(mydata$a2),]

logit.fit<-train(y ~., data=training, type="brnn")
pred<-predict(logit.fit, newdata=testing)

testing[,pred:=pred]
write.csv(testing, "C:/result_machine_learning.csv")

Формат файла INPUT (C: / test1.txt)

a1  b1  b2  a2  c

7277.68 7291.54 7221.00 7240.70 0

7266.55 7276.45 7197.38 7223.64 0

1 Ответ

1 голос
/ 09 января 2020

1. Одним из способов сохранения модели является использование saveRDS и readRDS:

logit.fit <- train(y ~., data=training, type="brnn")
saveRDS(logit.fit, "model.rds")

, и после ее запуска вы можете заменить обучение и сохранение чтением из файл:

logit.fit <- readRDS("model.rds")
pred <- predict(logit.fit, newdata=testing)

2. В качестве альтернативы, хотя, менее предпочтительно, вы можете использовать функции save и load:

logit.fit <- train(y ~., data=training, type="brnn")
save(logit.fit, file="model.Rdata")

, а затем загрузить его так:

load("model.RData")
pred <- predict(logit.fit, newdata=testing)

ОБНОВЛЕНИЕ: Из документации каретки:

объекты, созданные функцией train, содержат «оптимизированная» модель в подобъекте finalModel.

Таким образом, вы можете извлечь свою обученную модель следующим образом: logit.fit$finalModel Кроме того, есть изящная функция summary(model), которую вы можете может также оказаться полезным, просто запустите summary(logit.fit) после тренировки вашей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...