您的位置:首页 > 其它

pytho简单线性回归

2018-01-20 14:03 323 查看
#简单线性回归:只有一个自变量 y=k*x+b 预测使 (y-y*)^2  最小
import numpy as np

def fitSLR(x,y):
n=len(x)
dinominator = 0
numerator=0
for i in range(0,n):
numerator += (x[i]-np.mean(x))*(y[i]-np.mean(y)) # 累加 加权
dinominator += (x[i]-np.mean(x))**2   # 累加 加权

#print("numerator:"+str(numerator))   # 分子
#print("dinominator:"+str(dinominator))   #分母

b1 = numerator/float(dinominator)   # 分子/分母  得到  斜率   5
#b0 = np.mean(y)/float(np.mean(x))   # 得到偏向 20
b0 = np.mean(y) - b1 * float(np.mean(x))   # 得到偏向 20
'''
斜率 b1 = 每一个x的值 减去 x的均值 乘以 每一个y的值 减去 y的均值 在 加权
除以 每一个x的值 减去 x的均值 的 平方 后的 加权

y的均值 = b1 斜率  乘以 x的均值  加上  b0偏向
'''
print( '斜率 b1 : ',b1 )
print( '偏向 b0 : ',b0 )
return b0,b1

# y= b0+x*b1
def prefict(x,b0,b1):
return b0+x*b1

x=[1,3,2,1,3]   # 2
y=[14,24,18,17,27]   # 20

b0,b1=fitSLR(x, y)
y_predict = prefict(6,b0,b1)
print("y_predict:"+str(y_predict))
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息