保存FittedModel是错误的

时间:2011-07-06 12:15:36

标签: wolfram-mathematica mathematica-8

使用Mathematica 7和8,我们发现Mathematica无法正确保存并获得拟合程序的结果。我希望有人知道:这个错误的最佳实践解决方法是什么?

我们的任务是使用NonlinearModelFit拟合大量数据集,该模型为每个数据集返回一个FittedModel。这些配合需要一段时间,我们尝试使用Save和DumpSave将结果记忆到文件中。随后的分析使用Get将FittedModel拉回来。

Mathematica执行Save&得到没有警告,但返回的FittedModel是错误的。我们调用Get并从磁盘加载一个FittedModel,调用结果“foo”。尝试foo [10]用输入10来评估拟合模型。我们看到的错误是foo [“BestFitParameters”]应该返回一个列表规则,而是将字符串插入到函数中,因为它是一个类似10的数字。尝试foo [{“BestFitParameters”,“BestFitParameters”}]应该在列表中给出两次规则,但是对于有缺陷的foo仍然没有评估。

根据我们是删除/清除foo还是退出内核,有一种奇怪且误导性的行为:

  • 将FittedModel计算为foo
  • 将或DumpSave foo保存到磁盘
  • 删除和/或清除foo
  • 从磁盘获取foo
  • foo工作得很好

但如果我们重新启动内核就会失败

  • 将FittedModel计算为foo
  • 将或DumpSave foo保存到磁盘
  • 杀死并重新启动内核
  • 从磁盘获取foo
  • foo是越野车

之前有没有人见过这种行为?

这个错误背后有一个很好的解释吗?

有一个好的解决方法吗?

1 个答案:

答案 0 :(得分:10)

这是一个已知的错误,幸运的是有一个简单的解决方法。在评估Get以阅读已保存的FittedModel之前,请评估虚拟拟合模型代码。

In[1]:= NonlinearModelFit[Range[5], a x, x, a];

In[2]:= Get[FileNameJoin[{$HomeDirectory, "Desktop", "bignlm.mx"}]];

In[3]:= AbsoluteTiming[nlm["BestFitParameters"]]

Out[3]= {17.6010000, {a -> 1.45015, b -> 2.33999}}

如果跳过此初始评估,则由于未能自动加载实现该功能的所有相关代码,所述拟合模型似乎无法正常工作。对In[1]的评估基本上会强制加载。

相关问题