用matplotlib / numpy进行线性回归

我试图在已经生成的散点图上生成一个线性回归,但是我的数据是列表格式的,所有使用polyfit的例子都需要使用arangearange不接受名单。 我已经search高低如何将列表转换为数组,并没有看起来清晰。 我错过了什么吗?

接下来,如何最好地使用我的整数列表作为polyfitinput?

这里是我所遵循的polyfit例子:

 from pylab import * x = arange(data) y = arange(data) m,b = polyfit(x, y, 1) plot(x, y, 'yo', x, m*x+b, '--k') show() 

arange 生成列表(以及numpy数组); 键入help(np.arange)的细节。 您不需要在现有列表上调用它。

 >>> x = [1,2,3,4] >>> y = [3,5,7,9] >>> >>> m,b = np.polyfit(x, y, 1) >>> m 2.0000000000000009 >>> b 0.99999999999999833 

我应该补充一点,我倾向于在这里使用poly1d ,而不是写出“m * x + b”和更高阶的等价物,所以我的版本代码如下所示:

 import numpy as np import matplotlib.pyplot as plt x = [1,2,3,4] y = [3,5,7,10] # 10, not 9, so the fit isn't perfect fit = np.polyfit(x,y,1) fit_fn = np.poly1d(fit) # fit_fn is now a function which takes in x and returns an estimate for y plt.plot(x,y, 'yo', x, fit_fn(x), '--k') plt.xlim(0, 5) plt.ylim(0, 12) 

此代码:

 from scipy.stats import linregress linregress(x,y) #x and y are arrays or lists. 

给出了一个列表如下:

斜率:浮动
回归线的斜率
拦截:浮动
拦截回归线
r-value:float
相关系数
p值:浮动
假设检验的双侧p值,零假设是斜率为零
stderr:float
估算的标准误差

资源

另一个快速和肮脏的答案是,你可以将您的列表转换为一个数组使用:

 import numpy as np arr = np.asarray(listname)