matplotlib 如何找到多项式回归线的“峰值”

r7xajy2e  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(128)

是否可以找到使用Matplotlib计算的多项式回归线的峰值(顶点?)值(x,y)?
我在下面包括了我的基本设置(当然有更完整的数据集),以及实际回归线问题的屏幕截图。

  1. import matplotlib.pyplot as plt
  2. import pandas as pd
  3. import numpy as np
  4. from sklearn.preprocessing import PolynomialFeatures
  5. from sklearn.pipeline import make_pipeline
  6. from sklearn.linear_model import LinearRegression
  7. degree=6
  8. setX={'Fixation Duration': {0:1,1:2,2:3}}
  9. setY={'Fixation Occurrences': {0:1,1:2,2:3}}
  10. X_gall=pd.DataFrame.from_dict(setX)
  11. Y_gall=pd.DataFrame.from_dict(setY)
  12. X_seqGall = np.linspace(X_gall.min(),X_gall.max(),300).reshape(-1,1)
  13. polyregGall=make_pipeline(PolynomialFeatures(degree),LinearRegression())
  14. polyregGall.fit(X_gall,Y_gall)
  15. plt.scatter(X_gall,Y_gall, c="#1E4174", s=100.0, alpha=0.4)
  16. plt.plot(X_seqGall,polyregGall.predict(X_seqGall),color="#1E4174", linewidth=4)
  17. plt.show()

would like to find x,y values along red arrows

puruo6ea

puruo6ea1#

您可以从基础绘图数据中找到最大值。
首先,让我们更改绘图命令以显式定义轴:

  1. fig, ax = plt.subplots(figsize=(6,4))
  2. _ = ax.scatter(X_gall,Y_gall, c="#1E4174", s=100.0, alpha=0.4)
  3. poly = ax.plot(X_seqGall,polyregGall.predict(X_seqGall),color="#1E4174", linewidth=4)
  4. plt.show()

现在您可以访问行数据:

  1. lines = poly[0].axes.lines
  2. for line in lines:
  3. max_y = np.max(line.get_ydata())
  4. print(f"Maximum y is: {max_y}")
  5. x_of_max_y = line.get_xdata()[np.argmax(line.get_ydata())]
  6. print(f"x value of maximum y is: {x_of_max_y}")

输出量:

  1. Maximum y is: 3.1515605364361114
  2. x value of maximum y is: 2.8127090301003346
展开查看全部

相关问题