【问题标题】:Fitting linear model in Scalanlp/Breeze在 Scalanlp/Breeze 中拟合线性模型
【发布时间】:2016-12-20 05:35:28
【问题描述】:

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

0.0   0.0
1.0   1.0
2.0   2.0
3.0   3.1

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

  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)

输出是:

intercept=-0.020000000000000018
slope=1.03
r^2=0.0014623322596666252

截距和斜率是合理的,但是R-squared我不懂,应该接近1!

【问题讨论】:

    标签: scala-breeze


    【解决方案1】:

    你的向量需要排在最后而不是排在第一位。这就是你所期望的r^2 = 1-r_e^2

    编辑:虽然我上面所说的关于切换 1 的向量是正确的。即使使用它,我仍然得到一个非常不正确的 r 平方。我的斜率和截距是正确的,就像你的一样。所以...到源代码!

    EDIT2:已知问题。还没修好耸耸肩

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-23
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 2018-03-17
      • 2016-11-28
      • 1970-01-01
      • 2019-09-29
      相关资源
      最近更新 更多