首页 > 编程知识 正文

回归方程公式,回归方程怎么计算

时间:2023-05-05 14:05:13 阅读:246199 作者:2549

总结: 数据拟合的方法有很多种,如最小二乘法、遗传算法、神经网络等,它们各有各的优缺点。函数的拟合问题本质上是一个最优化问题。 最小二乘法拟合: 最小二乘法能得到任何散点的拟合曲线,但是不能拿到最优最高次项次数。训练数据的时候次数越高拟合度约好,但是预测的时候不准确,震荡比较大。r方:https://blog.csdn.net/yoggieCDA/article/details/106543375 由已知函数求参数: 高斯函数拟合(正态分布)等 神经网络拟合 缺点:不能得到方程 代码: 不足:不能根据实际值和预测值的差方和作为误差值,因为次数越高拟合度越好,但是预测越差, import numpy as npimport matplotlib.pyplot as pltfrom numpy import polyvaldef error(yhat,label): yhat = np.array(yhat) label = np.array(label) error_sum = ((yhat - label)**2).sum() return error_sumdef huigui(xyuce,p1): xyuce = np.array(xyuce) yuceyvals = p1(xyuce) print('预测y值 is :n', yuceyvals) plot1 = plt.plot(xyuce, yuceyvals, 's',label='original values') plot2 = plt.plot(xyuce, yuceyvals, 'r',label='polyfit values') plt.xlabel('x') plt.ylabel('y') plt.legend(loc=4) #指定legend的位置右下角 plt.title('polyfitting') plt.show()def finalhuigui(x,y,erxiangNum): x = np.array(x) # print('x is :n',x) y = np.array(y) # print('y is :n',y) erroCountDict=dict() # # 在使用polyfit函数时,由于polyfit内部机制,当自变量 X (也就是你的数据n)出现以下几种情形,就会出现你所得到的警告: # 1. 拟合多项式次数 大于或等于 X 的长度 # 2. 自变量 X 有重复数值或很相近的数值 # 3. X 可能需要变得更集中或者缩放一下 for i in range(erxiangNum): # 使用np.polyfit拟合,np.polyld得到多项式系数 #用3次多项式拟合 f1 = np.polyfit(x, y, i) # print('f1 is :n',f1) p1 = np.poly1d(f1) # 显示多项式 # print('p1 is :n',p1) #也可使用yvals=np.polyval(f1, x) yvals = p1(x)#拟合y值 # print('yvals is :n',yvals) # sumNum=error(yvals,y) y5 = polyval(p1,x) print(y5) erroCountDict[i]=y5 print(erroCountDict) finaFitNum=min(erroCountDict, key=erroCountDict.get) print(finaFitNum) # f1 = np.polyfit(x, y, finaFitNum) # print('f1 is :n',f1) p1 = np.poly1d(f1) # 显示多项式 print('最佳多项式 is :n',p1) # 也可使用yvals=np.polyval(f1, x) # p1为模型 yvals = p1(x)#拟合y值 print('训练y值 is :n', yvals) print('最佳多项式的拟合y值 is :n',yvals) #绘图1 plot1 = plt.plot(x, y, 's',label='original values') plot2 = plt.plot(x, yvals, 'r',label='polyfit values') plt.xlabel('x') plt.ylabel('y') plt.legend(loc=4) #指定legend的位置右下角 plt.title('polyfitting') plt.show() return p1, finaFitNumif __name__ == "__main__": x = [10, 20, 30, 40, 50, 60, 70, 80] y = [174, 236, 305, 334, 349, 351, 342, 323] p1, finaFitNum=finalhuigui(x,y,7) # yuce=[10,15,20,25, 30,35, 40,45, 50,55, 60,65, 70,75, 80] yuce = [10, 20, 30, 40,50,55,60,70,80] huigui(yuce,p1)

参考文档:
https://blog.csdn.net/changdejie/article/details/83089933?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-2
https://www.cnblogs.com/qi-yuan-008/p/12323535.html
https://www.jb51.net/article/180660.htm
https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.polyfit.html
https://wenku.baidu.com/view/cda9e384a0116c175f0e4879.html
https://zhidao.baidu.com/question/311173277.html
定义了一个计算损失的函数:
https://blog.csdn.net/dake13/article/details/80917932
字典取最小值
https://blog.csdn.net/weixin_41770169/article/details/80816886

Hibernate使用的方法是什么

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。