def fit_linear_model(x,y,slope=None):
'''Linear least squares (LSQ) linear regression (polynomial fit of degree=1)
Returns:
m (float) = slope of linear regression line of form (y = m*x + b)
b (float) = intercept of linear regression line'''
assert len(x)==len(y), ("Arrays x & Y must be equal length to fit "
"linear regression model.")
if slope == None:
(m,b) = scipy.polyfit(x,y,deg=1)
else:
LSQ = lambda b: np.sum( (y-(slope*x+b))**2.0 )
res = scipy.optimize.minimize(LSQ,x0=1,bounds=None)
(m,b) = (slope,res.x[0])
return (m,b)
评论列表
文章目录