【问题标题】:Python plotting a polynomial with fixed end pointPython绘制具有固定端点的多项式
【发布时间】:2016-12-03 09:39:54
【问题描述】:

我需要一个 python 解决方案来强制多项式在特定点结束。我已经阅读了此处提供的解决方案:How to do a polynomial fit with fixed points 到一个类似的问题,但由于没有定义端点而是定义多项式通过的位置,因此无法让这些方法中的任何一个在我的数据集上工作。

因此,我需要一个解决方案来强制多项式曲线在特定位置结束。

为了把这个放在上下文中,我需要这个示例如下图所示,我需要一条最适合下面数据的线,绿点代表原始数据,粉红色点是平均值每个 x 值的绿点。最佳拟合应该是三阶多项式,直到数据变为水平线性线。黑线是我当前使用 np.ployfit() 对最佳拟合线的尝试,我已将多项式定义为仅绘制到我将开始线性最佳拟合线的位置,但您可以看到尾部多项式太低了,因此我想强制它结束/通过一个特定点。

我愿意接受所有选择来获得一个数学上合理的最佳拟合,因为我已经为这个问题苦苦挣扎了太久了。

【问题讨论】:

  • 我没有投反对票,但其他人投了反对票,很可能是因为这个问题超出了 stackexchange 的范围。这是针对编程问题的。您最好将其发布在“交叉验证”甚至“计算科学”上,您可以通过浏览本页底部的网站找到它们。祝你好运。
  • 是什么阻止你定义一个拟合函数,它是多项式和常数的分段函数?
  • 抱歉,您当然需要scipy.optimize.curve_fit 之类的东西,而不是numpy.polyfit
  • @BillBell 谢谢我已经在“交叉验证”上发布了这个问题。
  • 我不明白您对链接问题中的答案有什么问题。多项式没有端点。

标签: python numpy matplotlib scipy data-analysis


【解决方案1】:

使用逻辑 sigmoid 代替多项式:

从您的一些样本数据点生成的公式和参数(取自图片):

其中 S(x)sigmoid function

【讨论】:

    【解决方案2】:

    一种独特的方法,因为您似乎想在水平维度上识别异常值

    按功率对数据进行分层,例如分成 10 kW 的间隔,以便每个间隔包含“足够”的点,以便使用一些可靠的分散估计器。在每个层中丢弃上极端观察值,直到稳健估计下降到稳定值。现在使用层的最大值作为衡量任何给定设备是否被视为“低效”的标准。

    【讨论】:

      猜你喜欢
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-21
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 1970-01-01
      相关资源
      最近更新 更多