python 拟合线,拟合函数

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

    原文作者:毒鸡蛋
    原文地址: https://blog.csdn.net/dujidan/article/details/121907342
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞