[英]An error while trying to use glm model for prediction on another computer
我想在一台R機器中保存一個glm對象並用它來預測位於另一台有更新數據的機器上的另一台數據集。我嘗試使用save
和load
但沒有成功。我做錯了什么? 這是一個玩具示例:
# on machine 1:
glm<-glm(y~x1+x2,data=dat1, family=binomial(link="logit")
save(glm,file="glm.Rdata") # the file is stored in a folder.
# on machine 2:
load(glm.RData) # got an error:"Error in load(glm.RData) : object 'glm.RData' not found"
#I tried :
load(file='glm.RData') # no error was displayed
print(glm) # got an error:"Error in load(glm.RData) : object 'glm.RData' not found"
任何幫助都會很棒。
根據@ user3710546的建議,我會避免使用名稱glm
來保存你的模型,因為它會掩蓋(即阻塞) glm()
函數,這使你很難在你的會話中使用它。
save()
和load()
save()
通常用於將對象列表保存到文件,而不是單個對象。 save()
的第一個參數是list
,'包含要保存的對象名稱的字符向量'。 (強調我的。)所以你想要像這樣使用它:
# On machine 1:
save(list = 'glm', file = '/path/to/glm.RData')
# On machine 2:
load(file = '/path/to/glm.RData')
請注意,文件擴展名通常區分大小寫:您保存到擴展名為.RData
的文件,但是從擴展名為.Rdata
的文件加載,這是不同的。 這可以解釋為什么找不到該文件。
saveRDS()
和readRDS()
使用save()
和load
的另一種方法是使用saveRDS()
和readRDS()
,它們被設計用於一個對象。 它們的使用方式略有不同:
# On machine 1
saveRDS(glm, file = '/path/to/glm.rds')
# On machine 2
glm = readRDS(file = '/path/to/glm.rds')
請注意.rds
文件擴展名以及readRDS()
不會自動放入環境中的事實(需要將其分配給某些內容)。
如果你只想保存公式 - 即實際的文本字符串 - 你可以在glm$formula
找到它,其中glm
是你的對象的名字。 它作為formula
對象返回,但您可以將其轉換為帶有as.character(glm$formula)
的字符串,然后將其寫入文本文件或其他任何內容。
但是,如果您希望模型本身沒有創建數據集(以減少磁盤空間),請查看本文 , 該文章討論了可以安全刪除glm
對象的哪些部分。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.