2015-08-24 44 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