numpy Polynomial.fit 返回不切实际的值

问题描述 投票:0回答:1

我想将多项式拟合到一系列 x/y 数据点,并在任意 x 值处对其进行评估。我正在使用 新的

numpy
多项式 API:

import matplotlib.pyplot as plt
import numpy as np

x = [50.0, 150.0, 250.0, 400.0, 600.0, 850.0, 1000.0]
y = [3.2, 10.1, 16.3, 43.7, 69.1, 45.2, 10.8]

mypol = np.polynomial.polynomial.Polynomial.fit(
    x = x,
    y = y,
    deg = 3,
)
np.polyval(mypol.coef, y)

不幸的是,这返回的值远大于原始 y 值:

array([7.34024294e+06, 1.96122504e+08, 9.06027339e+08, 3.70658027e+09,
       1.25012342e+10, 3.55289563e+10, 5.78446450e+10])

我尝试了多项式的阶数,但无法从该函数中获得任何有用的信息。我做错了什么?

python numpy curve-fitting
1个回答
0
投票

有两件事。

  1. Numpy 的
    polyval
    应在 x 点而不是 y 点进行评估,即您应该执行
    np.polyval(mypol.coef, x)
  2. 创建
    polyval
    后就没有理由使用
    mypol
    mypol
    适合,可评价为
    mypol(x)
© www.soinside.com 2019 - 2024. All rights reserved.