【问题标题】:Assertion Error while using LinearRegression使用线性回归时的断言错误
【发布时间】:2016-10-06 16:56:34
【问题描述】:

我正试图帮助一个试图在信号中使用LinearRegression 的朋友。数据包含 20,000 条记录,只有两列(时间和脉冲),我在 Databricks 的社区中运行它。我知道我的方法非常简单且有偏见,我尝试添加更多人工功能,为此我创建了这个简单但有用的功能。

def featuresCreator(x, grad, acc):
  if (grad > 0):
    return [x ** grad]
  else:
    return [x ** grad] + featuresCreator(x, grad - acc, acc)

featuresUDF = udf(lambda x, grad, acc: DenseVector(featuresCreator(x, grad, acc)), VectorUDT())

我认为在一个值范围内多次为该功能提供动力会帮助我过度拟合回归,这就是我运行这个的原因。

xf = df.select(featuresUDF(col("tiempo"), lit(12), lit(0.1)).alias("features"), col(" pulso").alias("label"))

一切都很好,DataFrame 只有两列,一列是特征,另一列是标签。当我尝试在数据上使用LinearRegression 时,问题出现了。

lr = LinearRegression().setFeaturesCol("features").setLabelCol("label").setMaxIter(200)
lrm = lr.fit(xf)

这里程序爆炸并显示以下异常。

java.lang.AssertionError:断言失败:lapack.dppsv 返回 5。

有没有办法解决这个问题?还是我做错了什么?

【问题讨论】:

  • 这个错误通常意味着你传递了一个不可解的矩阵。
  • 所以和向量的长度没有关系?
  • 没有。检查INFO代码:netlib.org/lapack/explore-html/d3/d62/dppsv_8f.htmlA的i阶前导小数不是正定的,所以分解不能完成,解还没有计算出来
  • @zero323 我认为这是您的 cmets 创建的有效答案!
  • @zero323 我应该关闭这个问题吗?我认为这些信息可能对其他人有所帮助。你怎么看?

标签: python-2.7 apache-spark pyspark linear-regression


【解决方案1】:

此错误通常意味着您传递了一个不可解的矩阵。

所以实际上它与向量的长度无关

查看INFO代码:netlib.org/lapack/explore-html/d3/d62/dppsv_8f.html:A的i阶前导小调不是正定的,所以分解不能完成,解有未计算

【讨论】:

    【解决方案2】:

    这个问题可以使用线性回归的求解器参数来解决。

    val lf=new LinearRegression().setSolver("l-bfgs")
    

    默认是正常的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 2017-10-13
      • 2020-10-25
      相关资源
      最近更新 更多