简单线性回归(Simple Linear Regression)

简单线性回归:
有且仅有一个自变量x,一个因变量y,x、y之间有线性关系,并且y是连续型变量。
假设方程为:
y = b 0 + b 1 x y=b_0+b_1x y=b0+b1x
假设有n个样本(即有n个x,n个y)
算法步骤:

  1. 求出 x ‾ \overline{x} x x ‾ = 1 n ∑ i = 1 n x i \overline{x}=\dfrac{1}{n}\sum_{i=1}^nx_i x=n1i=1nxi
  2. 求出 y ‾ \overline{y} y y ‾ = 1 n ∑ i = 1 n y i \overline{y}=\dfrac{1}{n}\sum_{i=1}^ny_i y=n1i=1nyi
  3. 求出 b 1 b_1 b1 b 1 = ∑ i = 1 n ( x i − x ‾ ) ( y i − y ‾ ) ∑ i = 1 n ( x i − x ‾ ) 2 b_1=\dfrac{\sum_{i=1}^n(x_i-\overline{x})(y_i-\overline{y})}{\sum_{i=1}^n(x_i-\overline{x})^2} b1=i=1n(xix)2i=1n(xix)(yiy)
  4. 求出 b 0 b_0 b0 b 0 = y ‾ − k x ‾ b_0=\overline{y}-k\overline{x} b0=ykx

代码(python)

import numpy as np
def fitSLR(x,y):
    n = len(x)
    numerator = 0
    denominator = 0
    for i in range(0,n):
        numerator +=(x[i]-np.mean(x))*(y[i]-np.mean(y))#np.mean()用于求均值
        denominator +=(x[i]-np.mean(x))**2
    b1 = numerator/float(denominator)
    b0 = np.mean(y)-b1*np.mean(x)
    return b0,b1
def predit(x,b0,b1):
    return b0+b1*x
x = [1,3,2,1,3]
y = [14,24,18,17,27]
b0,b1 = fitSLR(x, y)
x_test = 6
y_test = predit(x_test, b0, b1)
print(y_test)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值