我的问题的背景如下:
我正在尝试对一些数据应用线性回归模型,但如果数据没有以所需的格式显示,该模型将抛出异常错误。如果成功,我希望将输出的残差保存为新变量,但如果失败,则希望定义一个由零组成的数组作为新变量。
我的问题是我不能根据函数的成功或失败来声明这个变量。
更具体地说,该模型的调用方式如下:
import org.apache.commons.math3.stat.regression.OLSMultipleLinearRegression
import org.apache.commons.math3.stat.regression.AbstractMultipleLinearRegression
import scala.util.{Try,Success,Failure}
val model=new OLSMultipleLinearRegression()
val goodData=Array(Array(.1),Array(.2))
val badData=Array(Array(.1,.1),Array(.2,.2))
val y=Array(.5,.6)以下代码会产生异常错误MathIllegalArgumentException
model.newSampleData(y,badData)但这会产生正常的行为
model.newSampleData(y,goodData)如果有异常错误,那么我想声明变量val params=Array.fill(2)(0.0),但是如果没有异常错误,那么我想声明变量val params=model.estimateResiduals()。
我的尝试(使用Try、Success和Failure)是:
Try{model.newSampleData(y,badData)} match {
case Success(_)=>val params=model.estimateResiduals()
case Failure(_)=>val params=Array.fill(2)(0.0)
}但是当我输入params时,我得到错误的error: not found: value params。
如何在给定线性回归方法成功或失败的情况下声明变量params?
发布于 2017-12-25 08:41:26
您声明的变量是块的局部变量。使用
val params = Try{model.newSampleData(y,badData)} match {
case Success(_) => model.estimateResiduals()
case Failure(_) => Array.fill(2)(0.0)
}或者只是
val params = Try(model.newSampleData(y,badData))
.map(_ => model.estimateResiduals())
.getOrElse(Array.fill(2)(0.0))https://stackoverflow.com/questions/47964837
复制相似问题