2015-08-24 45 views
4

我正在使用R创建一些基本的机器学习模型。我使用klar,caret和e1071软件包。这里是生成我的模型代码如何在R中保存机器学习模型

library(e1071) 
library(klaR) 
library(caret) 



x = iris[,-5] 

y = iris$Species 

model = train(x,y,'nb',trControl = trainControl(method='cv',number=10)) 

我想知道,是否有可能将此模型保存在某处并稍后参考它?例如,在Python我们可以用咸菜包做

nbClassifier = nltk.NaiveBayesClassifier.train(featureSets) 

saveNBClassifier = open("abtNBClassifier.pickle","wb") 

pickle.dump(nbClassifier, saveNBClassifier) 

saveNBClassifier.close() 

后来

open_file = open("abtNBClassifier.pickle", "rb") 

classifier = pickle.load(open_file) 

open_file.close() 

是类似的东西可能在R'

回答

5

如果你只是想保存一个对象,你也可以使用:

saveRDS(model, file = "model.rds") 

之后您可以使用

loadedModel <- readRDS(model.rds) 

ReadRDS()不加载对象,因为它在保存时被命名,但可以用新名称加载。

有关save()和saveRDS之间的区别更多的信息()看到这link

+0

完美!正是我所期待的:) – AbtPst

2

是的,你可以只使用:

save(model, file="model.Rda")

及更高版本:

load("model.Rda")

+0

感谢@ tcash21,我能够拯救而不是负载。当我加载它作为 loadedModel =负载(“nbModel.Rda”) ,然后尝试查看loadedModel,它让我 “模型” ,而不是当你加载模型的实际模型 – AbtPst

+1

,它将会分配它与你保存的对象名称相同,所以在你的案例“模型”。加载对象后,您应该能够像平常一样处理它(例如,使用它进行预测) – Tchotchke

+0

谢谢,但是我还需要对它进行解除引用吗?如果它总是会被加载为'模型'或任何我保存它的名字,它是否有意义做 loadModel = load(“model.Rda”) – AbtPst