You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Matplotlib拟合的多项式回归线的峰值(顶点)坐标

获取多项式回归线的峰值坐标

下面两种方法适配你的代码框架,可快速获取回归线峰值的(x,y)坐标:

方法一:从预测序列中直接查找(简单直观)

利用你已经生成的密集采样序列,直接定位最大值对应的坐标:

# 在现有代码基础上添加以下内容
Y_predGall = polyregGall.predict(X_seqGall)

# 找到预测值最大值的索引
peak_idx = np.argmax(Y_predGall)
# 提取峰值坐标
peak_x = X_seqGall[peak_idx][0]
peak_y = Y_predGall[peak_idx][0]

print(f"回归线峰值坐标:({peak_x:.4f}, {peak_y:.4f})")

# 可选:在图中标注峰值(对应红色箭头指向位置)
plt.scatter(peak_x, peak_y, c="red", s=150, marker="*")
plt.annotate(f"Peak ({peak_x:.2f}, {peak_y:.2f})", 
             xy=(peak_x, peak_y), 
             xytext=(peak_x+0.2, peak_y+0.2),
             arrowprops=dict(facecolor='red', shrink=0.05))

plt.show()

方法二:多项式求导计算(数学精确)

若需要不受采样密度影响的精确极值点,可通过提取多项式系数、求导找根的方式计算:

# 提取模型中的多项式系数
poly_features = polyregGall.named_steps['polynomialfeatures']
linear_reg = polyregGall.named_steps['linearregression']
coeffs = linear_reg.coef_[0]  # 系数对应x^0, x^1,...,x^degree

# 构造多项式函数及导函数(注意调整系数顺序)
poly = np.poly1d(np.flip(coeffs))
poly_deriv = poly.deriv()

# 求导函数的根(极值点x坐标)
critical_points = np.roots(poly_deriv)

# 筛选在数据取值范围内的实根
valid_x = [x.real for x in critical_points if np.isreal(x) and (X_gall.min() <= x.real <= X_gall.max())]

# 找到对应y值最大的点
peak_x = max(valid_x, key=lambda x: poly(x))
peak_y = poly(peak_x)

print(f"回归线峰值坐标:({peak_x:.4f}, {peak_y:.4f})")

关于红色箭头指向位置的坐标

如果箭头指向的是回归线的峰值,上述两种方法得到的坐标即为目标位置;若箭头是手动标注的其他点,需在绘制箭头时同步记录对应坐标值。


内容的提问来源于stack exchange,提问作者FriendlyPomelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:54:34