C++(LAPACK、sgels)和 Python(Numpy、lstsq)结果之间的差异

2023-12-11

我正在比较 C++ 和 Python 计算的数值结果。在 C++ 中,我利用 LAPACK 的 sgels 函数来计算线性回归问题的系数。在 Python 中,我使用 Numpy 的 linalg.lstsq 函数来完成类似的任务。

sgels 和 linalg.lstsq 使用的方法之间有什么数学差异?

以数值方式比较结果(即回归系数)时的预期误差(例如 6 位有效数字)是多少?

仅供参考:我绝不是 C++ 或 Python 专家,这使得很难理解函数内部发生的情况。


看一下numpy的源码,在文件中linalg.py, lstsq 依赖于 LAPACK 的zgelsd()对于复杂和dgelsd()真正的。以下是差异sgels():

  • dgelsd() is for double while sgels() is for float。精度还是有差别的...
  • dgels()使用矩阵 A 的 QR 分解并假设 A 具有满秩。矩阵的条件数必须合理才能得到有意义的结果。看这个课程用于获取该方法的逻辑。另一方面,dgelsd()利用 A 的奇异值分解。特别是,A 可能是秩不足的,并且根据附加参数,小的奇异值会被丢弃rcond或机器精度。请注意 numpy 的默认值rcond is -1:负值表示机器精度。看这个课程为了逻辑。
  • 根据LAPACK基准, 可以预期dgels()大约快 5 倍dgelsd().

您可能会发现结果之间存在显着差异sgels() and dgelsd()如果矩阵是病态的。事实上,线性回归的误差是有界限的,这取决于算法和rcond()即被使用。看LAPACK 用户指南,线性最小二乘问题的误差界用于估计误差和更多详细信息:线性最小二乘问题的误差界了解技术细节。

作为结论,sgels() and dgels()如果采取以下措施,则可以使用b准确且易于与解释变量相关。例如,如果传感器放置在排气管的出口处,就很容易猜测哪些电机正在运行。但有时,源和测量之间的线性联系并不精确已知(A 项的不确定性),或者根据测量来区分污染者变得更加困难(一些污染者距离传感器组很远,而 A 是病态的)。有条件)。在这种情况下,dgelsd()并调整rcond争论会有所帮助。每当有疑问时,请使用dgelsd()并估计估计的误差x根据LAPACK的用户指南.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++(LAPACK、sgels)和 Python(Numpy、lstsq)结果之间的差异 的相关文章

随机推荐

  • 使用 powershell 从 HTML 网站抓取图像链接

    我想批量下载一些图片库 这些图像是免费提供的 无需任何许可 我一生都无法让它发挥作用 这是我到目前为止所拥有的 pattern 吐出的是整个 HTML 行 而不仅仅是图像链接 有什么可以给我的指点吗 出于测试目的 该循环设置为仅运行一次 循
  • Oracle 透明数据加密未解密访问

    我可以按照以下所有陈述都成立的方式设置 Oracle 数据库吗 a 某些列 可能是所有列 都已加密 因此对数据库文件的直接文件访问将不允许攻击者检索任何记录 b 加密列对于授权用户透明地解密 其中授权发生 例如通过拥有一定的角色或特权 c
  • 重载一元运算符& 有哪些合理的理由?

    好吧 我已经受到启发去做一些头部冲孔 好像超载了operator 导致不小的疼痛 存在哪些合法的超载情况 不能说我曾经这样做过 我似乎记得类似智能指针类的东西 它覆盖了operator 因为它想要返回所包含指针的地址而不是智能指针对象的地址
  • 计算随机生成的数字列表中的频率

    我生成了 0 9 的 100 个随机数 我应该计算每个数字出现的次数 将其存储在 10 个整数的数组中并进行计数 这是我到目前为止所拥有的 我无法弄清楚计数部分 Random r new Random int integers new in
  • 对单词数组进行排序 - 非英文字母 + 双字符字母 PHP

    我想按字母顺序对单词数组进行排序 不幸的是 在我的语言 克罗地亚语 中 有双字符字母 例如 lj nj d 并且 php 未正确排序字母sort函数 例如 这是正确排序的克罗地亚字母表 还有一些英文字母 alphabet array a b
  • java中如何将图像转换为透明图像

    如何将图像的白色背景转换为透明背景 谁能告诉我该怎么做 谷歌的第一个结果是这样的 使颜色透明http www rgagnon com javadetails java 0265 html 它使图像的蓝色部分透明 但我确信您可以调整它以使用白
  • 如何将图库中的图像存储到 SQLite 数据库中

    我已经尝试使用此代码将图像从图库上传到我的应用程序中的 sqllite 数据库 但是当我的应用程序尝试打开图库时 它给出强制关闭错误 我不知道问题是什么 请帮助我并提前感谢 public class ImagggggggActivity e
  • 转换后的 mp4 h264 基线格式加载时间较长

    我已将视频转换为 mp4 x264 基线格式 并且它可以在所有 PC 手机上正常工作 问题是加载视频需要很长时间 而谷歌搜索发现 ffmpeg 会在视频的末尾处转换并设置索引文件因此它会加载到最后阅读 然后播放视频 因此任何缩短加载时间的建
  • Iterator 类和 foreach 构造之间的性能差异

    我正在运行以下代码 但有时在运行它时会出现某种并发异常 ArrayList
  • 计算青蛙到达河对岸所需的最少跳跃次数

    我正在处理下面提供的 Codility 问题 斐波那契数列使用以下递归公式定义 F 0 0 F 1 1 F M F M 1 F M 2 if M gt 2 一只小青蛙想要到河的对岸 青蛙最初位于河的一侧 位置 1 并想要到达另一侧 位置N
  • 检查 PHP 中的多个变量(布尔值)

    我在我的代码中使用它 但我认为它可以改进并且可以用更简单的方式完成 if phaseOne true phaseTwo true phaseThree true 你可以这样做 if phaseOne phaseTwo phaseThree
  • 在 Pandas 中按组回填列

    我有一个类似的csv A B C D 1 2 1 2 30 100 1 2 40 100 4 5 4 5 60 200 4 5 70 200 8 9 第 1 行和第 4 行中缺少 C 值 NaN 我想分别从第 2 行和第 5 行获取它们的值
  • 如何在GroupLayout Java中设置Jframe背景图片

    我试图为我的框架设置背景图像 但它不起作用 我尝试了这个链接 在 JFrame 中设置背景图像 代码 setContentPane new JLabel new ImageIcon ImageIO read new File Images
  • split 不返回空元素

    为什么这些不都返回bbb perl e a print map b split a lt
  • 过滤器功能 dplyr 似乎不起作用[关闭]

    Closed 这个问题是无法重现或由拼写错误引起 目前不接受答案 假设我在 R Studio 中加载了一个名为 exprCore1 的数据框 df 如下所示 measure qid value 1 p5 1 0 2 2 p100 1 0 8
  • Angular2路由器保留查询字符串

    我编写了一个使用路由器的 Angular2 v2 0 1 应用程序 该网站加载了多个查询字符串参数 因此完整的 URL 最初如下所示 https my application com param1 val1 param2 val2 para
  • 设计以避免派生类中的类型转换?

    public interface IBasePresenter public interface IJobViewPresenter IBasePresenter public interface IActivityViewPresente
  • 使用变量过滤器列出文件

    我正在尝试在 shell bash 中使用过滤器列出文件 这个例子有效 result ls A1 A2 txt echo result 文件1 A1 txt 文件2 A2 txt 但是当将过滤器放入变量中时 它不起作用 filter A1
  • 带 AVPlayer 的应用程序启动后播放 mp4 中断 iPod 音乐

    我的应用程序使用 AVPlayer 播放 mp4 当我的应用程序完成启动时 它会中断 iPod 音乐 尽管我已将音频会话设置为允许与其他人混合 BOOL application UIApplication application didFi
  • C++(LAPACK、sgels)和 Python(Numpy、lstsq)结果之间的差异

    我正在比较 C 和 Python 计算的数值结果 在 C 中 我利用 LAPACK 的 sgels 函数来计算线性回归问题的系数 在 Python 中 我使用 Numpy 的 linalg lstsq 函数来完成类似的任务 sgels 和