gpt4 book ai didi

python - 如何在 Python 中复制 Excel 的 "Power Trendline"?

转载 作者:行者123 更新时间:2023-11-28 16:30:49 24 4
gpt4 key购买 nike

如何在 Python 中重新创建“Excel 功率趋势线”并获取系数?

在 Excel 中,此数据...

x = [5.5, 6.0, 6.5, 7, 9]
y = [64.0575, 69.656, 75.781, 82.7023, 111.156866]

...创建生成回归公式的趋势线:

y = 9.2347 * (x ^ 1.1294)

我想在 Python 中执行此操作,以便稍后在我的软件中使用公式中的系数。

谢谢!

最佳答案

我意识到这个问题目前已有 2 年 3 个月大,但目前的答案并不完整。这是一个完整的答案。

您必须先了解幂公式的结构。

y = some_number*x^(-another_number)

例子:

from scipy.optimize import curve_fit
import matplotlib.pyplot as plt

x = [5.5, 6.0, 6.5, 7, 9]
y = [64.0575, 69.656, 75.781, 82.7023, 111.156866]
popt, pcov = curve_fit(lambda fx,a,b: a*fx**-b, x, y)
power_y = popt[0]*x**-popt[1]

plt.scatter(x, y, label='actual data')
plt.plot(x, power_y, label='power-fit')
plt.legend()
plt.show()

生成以下图表: power plot

说明功率曲线的更好示例可能是:

x = [5.5, 6.0, 6.5, 7, 9]
y = [100, 80, 40, 10, 5]
popt, pcov = curve_fit(lambda fx,a,b: a*fx**-b, x, y)
power_y = popt[0]*x**-popt[1]

plt.scatter(x, y, label='actual data')
plt.plot(x, power_y, label='power-fit')
plt.legend()
plt.show()

power plot decaying

如果你想显示一条平滑的线而不是锯齿状的线,请导入 numpy 并执行以下操作:

# make the line smooth instead of jagged
import numpy as np

x = [5.5, 6.0, 6.5, 7, 9]
y = [100, 80, 40, 10, 5]
popt, pcov = curve_fit(lambda fx,a,b: a*fx**-b, x, y)
x_linspace = np.linspace(min(x), max(x), 100)
power_y = popt[0]*x_linspace**-popt[1]

plt.scatter(x, y, label='actual data')
plt.plot(x_linspace, power_y, label='smooth-power-fit')
plt.legend()
plt.show()

smoothed power plot

所有这一切的关键是使用 scipy.optimize.curve_fit 找到正确的系数并从数学上了解幂函数的结构。

关于python - 如何在 Python 中复制 Excel 的 "Power Trendline"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32121877/

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