利用最小二乘法进行参数估计

应用示例

from scipy.optimize import leastsq

# 公式求解
def get_C_formula(X, par):
    DT = X
    alpha, beta = par
    return alpha * DT + beta

# 实验数据x, y和拟合函数之间的差,p为拟合需要找到的系数
def residuals1(p, y, x): 
    return y - get_C_formula(x, p)


# 参数估计
# residuals误差函数
# par为拟合参数的初始值
# args为需要拟合的实验数据
def get_related_par(x, y, par, residuals):
    plsq = leastsq(residuals, par, args=(y, x)) # 调用leastsq进行数据拟合, residuals为计算误差的函数
    return plsq[0]

# 公式预测
def get_pre_formula(train_data, all_data):
    par2 = 0.5, 0.5, 0.5
    par2 =  get_related_par([train_data['DT'], train_data['N']], train_data['C'], par2, residuals2)
    y_pre2 = all_data[['N','DT']].apply(lambda row:get_C_formula2([row['DT'], row['N']], par2), axis=1)
    print('参数估计:',par2)
    print ('RMSE2:', get_RMSE(y_pre2, all_data['C'].values))
    return y_pre2

 

你可能感兴趣的:(Python学习)