【问题标题】:How to save Machine Learning models in R如何在 R 中保存机器学习模型
【发布时间】:2015-11-18 01:06:45
【问题描述】:

我正在使用 R 创建一些基本的机器学习模型。我使用 klar、caret 和 e1071 包。这是生成我的模型的代码

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



x = iris[,-5]

y = iris$Species

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

我想知道,是否可以将此模型保存在某个地方并稍后参考?比如在python中我们可以使用pickle包来做

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 中有类似的可能吗?

【问题讨论】:

    标签: r machine-learning


    【解决方案1】:

    是的,你可以使用:

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

    及以后:

    load("model.Rda")

    【讨论】:

    • 感谢@tcash21,我可以保存但不能加载。当我将其加载为loadedModel = load(“nbModel.Rda”)然后尝试查看loadedModel时,它显示的是“模型”而不是实际模型
    • 当您加载模型时,它会为其分配与您保存它的对象相同的名称,因此在您的情况下为“模型”。加载对象后,您应该能够像往常一样使用它(例如,使用它进行预测)
    • 谢谢,但是我还需要取消引用它吗?如果它总是被加载为“模型”或我保存它的任何名称,那么这样做是否有意义 loadModel = load("model.Rda")
    • 不,loadModel = load("model.Rda") 没有意义。就像答案一样,只做load("model.Rda") 确实有意义。如果你想用loadModel = model 重命名它,这取决于你。
    【解决方案2】:

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

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

    之后就可以使用了

    loadedModel <- readRDS(model.rds)
    

    ReadRDS() 不会加载保存时命名的对象,但可以以新名称加载。

    有关 save() 和 saveRDS() 之间区别的更多信息,请参阅link

    【讨论】:

    • 完美!正是我想要的:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多