python拟合直线的斜率_线性曲线拟合总是得到斜率和y的中间值为1

我得到了一些东西作为Excel的线性拟合,使用scipy basinhopping而不是曲线拟合和大量迭代。运行迭代需要一点时间,而且还需要一个错误函数,但它是在没有缩放原始数据的情况下完成的。Basinhopping docs.import numpy as np

import matplotlib.pyplot as plt

from scipy.optimize import basinhopping

def func( x0, x_data, y_data ):

error = 0

for x_val, y_val in zip(x_data, y_data):

error += (y_val - (x0[0]*x_val + x0[1]))**2

return error

x_data = [290., 300., 310.]

y_data = [1.87e+21, 2.07e+21, 2.29e+21]

a = 1

b = 1

x0 = [a, b]

minimizer_kwargs = { 'method': 'TNC', 'args': (x_data, y_data) }

res = basinhopping(func, x0, niter=1000000, minimizer_kwargs=minimizer_kwargs)

print res

这给出了x:array([7.72723434e+18,-2.38554994e+20]),但是如果您再试一次,您会发现这有一个非唯一结果的问题,尽管它会给出类似的大概值。在

下面是fit与Excel解决方案的比较。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值