![](/img/trans.png)
[英]How to read properties file using org.apache.commons.configuration2?
[英]org.apache.commons.math3.linear.SingularMatrixException: matrix is singular
我正在使用cloudera库com.cloudera.sparkts对一组值进行时间序列预测。
var model = ARIMA.fitModel(1,0,2,mySeries)
model.forecast(newSeries,10)
执行此操作时,出现如下所示的异常:
ERROR Executor: Managed memory leak detected; size = 5255488 bytes, TID = 12
ERROR Executor: Exception in task 0.0 in stage 17.0 (TID 12)
org.apache.commons.math3.linear.SingularMatrixException: matrix is singular
at org.apache.commons.math3.linear.QRDecomposition$Solver.solve(QRDecomposition.java:354)
在将序列传递给模型之前,我正在检查序列是否具有相同的值,如果值相同,则不执行操作。
无论如何,我可以解决此异常吗?
我不认为这里的singular
意味着您的序列只有一个值,但是解决方案Matrix是Singular 。
换句话说,您的方程式(拟合)没有实际解。
我试图将各种模型应用到多个系列之间,在这期间,我遇到了这个异常,执行中断了。
Cloudera时间序列库中没有可用的功能来检查模型是否适合时间序列集合。 因此,我通过捕获异常并忽略这些模型来控制此异常。 因此,即使某些模型不适合该系列,我也可以通过忽略破坏模型来使其适合其他一些模型。
var model1Passed = true
try{
var model1 = ARIMA.fitModel(1,0,1,series)
}
catch{
case _: Throwable => model1Passed = false
}
创建模型后,可以通过检查AIC(Akaike信息标准)值来检查模型兼容性,如下所示:
val AICval = model1.approxAIC(series)
AIC的值越小,表示模型越好。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.