如何从Matlab广义线性模型对象中删除训练数据集

时间:2015-03-19 11:12:23

标签: matlab

我在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(...)的所有方便和安全? (我当然可以撕掉回归系数并自己做预测逻辑,但我不愿意)

1 个答案:

答案 0 :(得分:0)

我不认为你能做到这一点,我很害怕。

对于大多数其他模型类型,例如RegressionTreeClassificationSVM等,有一个伴随模型类,例如CompactRegressionTreeCompactClassificationSVM等等,是相同但没有保留训练数据(并因此而略微降低了诊断功能,但保留了预测能力)。

直到现在我还没有意识到这一点,但看起来LinearModelNonLinearModelGeneralizedLinearModel类并没有这样的等价物。

我担心我无法想到一个简单的解决方法。我会向MathWorks提交一个增强请求(登录到您的MathWorks帐户并转到支持部分),因为我无法想到它为什么会很困难的原因,并且会使更加一致一套功能。


编辑:看起来MathWorks正在逐步引入此功能。在R2016a中引入了CompactLinearModel,在R2016b中引入了CompactGeneralizedLinearModel。但是,从R2017a开始,仍然没有CompactNonLinearModel