我在matlab2015a中使用
生成了分类模型glm = fitglm(Ttrain,...)
我想保留glm并传递它,但是matlab还会保留绑定到对象的训练数据(Ttrain - 一个表)。如果您有许多型号+大型训练数据集(您可以轻松耗尽内存),这可能会变得令人望而却步。但是做一些天真的事情就像设置:
glm.Variables= [];
给出
Error using classreg.regr.FitObject/subsasgn (line 753)
The Variables property for class GeneralizedLinearModel is read-only.
如何从线性模型中丢弃训练数据,但仍然可以使用调用glm.predict(...)
的所有方便和安全? (我当然可以撕掉回归系数并自己做预测逻辑,但我不愿意)
答案 0 :(得分:0)
我不认为你能做到这一点,我很害怕。
对于大多数其他模型类型,例如RegressionTree
,ClassificationSVM
等,有一个伴随模型类,例如CompactRegressionTree
,CompactClassificationSVM
等等,是相同但没有保留训练数据(并因此而略微降低了诊断功能,但保留了预测能力)。
直到现在我还没有意识到这一点,但看起来LinearModel
,NonLinearModel
和GeneralizedLinearModel
类并没有这样的等价物。
我担心我无法想到一个简单的解决方法。我会向MathWorks提交一个增强请求(登录到您的MathWorks帐户并转到支持部分),因为我无法想到它为什么会很困难的原因,并且会使更加一致一套功能。
编辑:看起来MathWorks正在逐步引入此功能。在R2016a中引入了CompactLinearModel
,在R2016b中引入了CompactGeneralizedLinearModel
。但是,从R2017a开始,仍然没有CompactNonLinearModel
。