gpt4 book ai didi

java - 生成的多项式回归值距坐标太远

转载 作者:行者123 更新时间:2023-11-30 08:39:29 25 4
gpt4 key购买 nike

根据下面的多项式回归系数值代码,当我计算任意 x 点的回归值时。获得的值距离等效 y 坐标更远(特别是对于以下坐标)。谁能解释为什么差异如此之大,是否可以将其最小化或理解上存在任何缺陷。目前的要求不是每个点相差超过 150。


import numpy as np
x=[0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100]
y=[0,885,3517,5935,8137,11897,10125,13455,14797,15925,16837,17535,18017,18285,18328,18914,19432,19879,20249,20539,20746]
z=np.polyfit(x,y,3)
print(z)

我还尝试了java中可用的各种代码,但是该数据的系数值在每个地方都是相同的。请帮助理解。
例如


0.019168 * N^3 + -5.540901 * N^2 + 579.846493 * N + -1119.339450<br/>
N 等于 5 值等于 1643.76649
Y 值 885
N 等于 10 值等于 4144.20338
Y 值 3517
N等于100;值=20624.29985
Y 值 20746

最佳答案

多项式拟合的效果符合预期。这里没有错误,只是你的数据有很大偏差。不过,您可能想重新调整数据的比例。如果将参数 full=True 添加到 np.polyfit,您将收到更多信息,包括残差,它本质上是平方拟合误差的总和。查看其他 SO post了解更多详情。

import matplotlib.pyplot as plt
import numpy as np

x = [0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100]
y = [0,885,3517,5935,8137,11897,10125,13455,14797,15925,16837,17535,18017,18285,18328,18914,19432,19879,20249,20539,20746]

m = max(y)
y = [p/m for p in y] # rescaled y such that max(y)=1, and dimensionless

z, residuals, rank, sing_vals, cond_thres = np.polyfit(x,y,3,full=True)

print("Z: ",z) # [ 9.23914285e-07 -2.67082878e-04 2.79497972e-02 -5.39544708e-02]

print("resi:", residuals) # 0.02188 : quite decent, depending on WHAT you're measuring ..

Z = [z[3] + q*z[2] + q*q*z[1] + q*q*q*z[0] for q in x]

fig = plt.figure()
ax = fig.add_subplot(111)

ax.scatter(x,y)
ax.plot(x,Z,'r')
plt.show()

enter image description here

关于java - 生成的多项式回归值距坐标太远,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59676871/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com