python 拟合线,拟合函数
拟合过程
polyfit()函数可以使用最小二乘法将一些点拟合成一条曲线
numpy.polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)
# x:要拟合点的横坐标
# y:要拟合点的纵坐标
# deg:自由度.例如:自由度为2,那么拟合出来的曲线就是二次函数,自由度是3,拟合出来的曲线就是3次函数
numpy.poly1d(c_or_r, r=False, variable=None)
参数1:为一个数组,若没有参数2,则生成一个多项式,例如
p = np.poly1d([2,3,5,7])
print§ ==>>2×3 + 3×2 + 5x + 7 数组中的数值为coefficient(系数),从后往前 0,1,2.。。为位置书的次数
参数2:若参数2为True,则表示把数组中的值作为根,然后反推多项式,例如
q = np.poly1d([2,3,5],True)
print(q) ===>>(x – 2)(x – 3)(x – 5) = x3 – 10×2 + 31x -30
参数3:variable=‘z’表示改变未知数的字母,例如:
q = np.poly1d([2,3,5],True,varibale = ‘z’)
print(q) ===>>(z – 2)(z – 3)(z – 5) = z3 – 10z2 + 31z -30
使用poly1d()函数帮我们拼接方程
import numpy as np
parameter = np.polyfit(x, y, 3) # 拟合3次方程的参数
p = np.poly1d(parameter) # 组合 方程
y2 = p(x) # 拟合后y值
绘制散点图及拟合线
plt.scatter(x, y)
plt.plot(x, y2, color='g')
plt.show()
评估指标R方
利用相关系数矩阵计算R方
correlation = np.corrcoef(y, y2)[0,1] #相关系数
correlation**2 #R方
poly1d函数自带的输出结果
p = np.poly1d(parameter,variable='x')
print(p)
参考链接:
https://blog.csdn.net/fffsolomon/article/details/104831050
https://www.cnblogs.com/zhouzhe-blog/p/9621679.html