如何获取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
相关产品推荐
相关产品推荐

