首页 > 编程知识 正文

拟合度阈值的计算公式,组合数计算python

时间:2023-05-03 06:53:35 阅读:249591 作者:4836

  有时候对数据的分析处理,需要进行曲线拟合,python提供了丰富的工具,其中scipy中的curve_fit可以用来进行幂数拟合或者指数拟合等各种类型的拟合。

  先定义好要拟合的函数形式target_func,然后调用函数popt, pcov = curve_fit(target_func, xdata, ydata)可以返回target_func中的参数,参数存储在popt数组中。

  拟合度R²衡量的是拟合函数整体的拟合度,R²最大值为1,越接近于1,说明函数的拟合度越好,公式表达为R²=1-SSres/SStot。SSres为残差平方和,SStot为去掉均值后的平方和。

计算过程如下:

                 为ydata的均值

  

    fi为根据拟合函数计算出来的y值

  

  如下代码给定了一组x,y数据,使用函数 y = a * x^b 来拟合这组数据,并计算拟合度R²。最后打印出了拟合函数的参数a、b,及拟合度R²

from scipy.optimize import curve_fitimport numpy as npxdata = [0.1738, 0.0325, 0.0135, 0.0058, 0.0028]ydata = [11.313, 15.953, 21.599, 33.212, 54.098]### define the fit functions, y = a * x^b ###def target_func(x, a, b): return a*(x**b)### curve fit ###popt, pcov = curve_fit(target_func, xdata, ydata)### Calculate R Square ###calc_ydata = [target_func(i, popt[0], popt[1]) for i in xdata]res_ydata = np.array(ydata) - np.array(calc_ydata)ss_res = np.sum(res_ydata**2)ss_tot = np.sum((ydata - np.mean(ydata))**2)r_squared = 1 - (ss_res / ss_tot)### Output results ###print "a = %f b = %f R2 = %f"%(popt[0], popt[1], r_squared)print ydata, calc_ydata

输出结果为:a = 2.761469  b = -0.499174   R2 = 0.965864, 即 y = 2.76 * x^(-0.499),拟合度高达96.6%。

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