在 python 中找到最佳拟合线的梯度

Finding the gradient of best fit line in python

如何计算 python 中最佳拟合线的梯度?我绘制了 2 个数组 x 和 y,然后使用 polyfit 制作了一条最佳拟合线(在网上找到了一个示例)。我现在正试图找到我的最佳拟合线的梯度,但我不确定如何。我试过在这里查看类似的问题,但到目前为止我所做的一切都没有奏效。这是我的代码:

x = np.array(a)
y = np.array(b)

plt.figure()
plt.plot(x, y) 
plt.plot(np.unique(x), np.poly1d(np.polyfit(x, y, 1))(np.unique(x)), color = 'k')
plt.xlim((0,100))
plt.ylim((0,100))
plt.show()

然后我尝试按照我在类似问题上看到的那样来做:

m = ((np.mean(x) * np.mean(y)) − (np.mean(x * y))/((np.mean(x))**2 − np.mean(x**2))
print(m)

但我只是遇到了错误。谢谢。

斜率已由 polyfit 函数返回。所以:

slope, intercept = np.polyfit(x, y, 1)
#For a linear polynomial (so ,1), the formula for the line = slope*x+intercept (ax+b)

适用于您的案例:

import numpy as np
import matplotlib.pyplot as plt

#Example data
x = [0,1,2,3,4]
y = [1,2,5,8,1]
x = np.array(x)
y = np.array(y)

#Fit line
slope, intercept = np.polyfit(x, y, 1)

#Plot
plt.figure()
plt.scatter(x, y) 
plt.plot(np.unique(x), np.poly1d(np.polyfit(x, y, 1))(np.unique(x)), color = 'k')
plt.show()

print(slope)

请参考https://numpy.org/doc/stable/reference/generated/numpy.polyfit.html