簡體   English   中英

嘗試在另一台計算機上使用glm模型進行預測時出錯

[英]An error while trying to use glm model for prediction on another computer

我想在一台R機器中保存一個glm對象並用它來預測位於另一台有更新數據的機器上的另一台數據集。我嘗試使用saveload但沒有成功。我做錯了什么? 這是一個玩具示例:

# 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的部分內容

如果你只想保存公式 - 即實際的文本字符串 - 你可以在glm$formula找到它,其中glm是你的對象的名字。 它作為formula對象返回,但您可以將其轉換為帶有as.character(glm$formula)的字符串,然后將其寫入文本文件或其他任何內容。

但是,如果您希望模型本身沒有創建數據集(以減少磁盤空間),請查看本文該文章討論了可以安全刪除glm對象的哪些部分。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM