在Scalanlp / Breeze中拟合线性模型

时间:2016-07-13 11:16:49

标签: scala-breeze

我尝试将线性模型(并获得R ^ 2)拟合到以下测试数据

sudo chmod 777 *

我使用scalanlp / breeze 0.12编写了以下代码:

0.0   0.0
1.0   1.0
2.0   2.0
3.0   3.1

输出是:

  import breeze.linalg.{DenseMatrix, DenseVector}
  import breeze.stats.regression.leastSquares

  val indep = DenseMatrix((1.0, 0.0), (1.0, 1.0), (1.0, 2.0), (1.0, 3.0))
  val dep = DenseVector(0.0, 1.0, 2.0, 3.1)
  val result = leastSquares(indep, dep)

  println("intercept=" + result.coefficients.data(0))
  println("slope=" + result.coefficients.data(1))
  println("r^2=" + result.rSquared)

拦截和坡度是合理的,但我不了解R平方,它应该接近1!

1 个答案:

答案 0 :(得分:1)

你的矢量需要不是第一个。因此,您预期r^2 = 1-r_e^2

编辑:虽然我上面所说的关于切换你的1s矢量是正确的。即使使用它,我仍然得到一个可怕的不正确的r平方。我的坡度和拦截虽然很像,但很像你的。所以...到源代码!

EDIT2:已知问题。哈斯已经修好了。 耸肩