线性回归原理及算法

       今天给大家的介绍一下线性模型,线性回归模型虽说模型简单,但距今为止依旧在机器学习算法中占据一定的地位,不仅如此,而且在实际的业务应用中也是屡试不爽的机器学习算法。

       线性回归模型公式:Y=Xw+b (一个X变量就代表一元线性回归,多个则为x1*w1+x2*w2+..+xn*wn)

线性回归模型的原理思路及应用(先说一下它的应用场景把,这里应该会相应的更好理解其算法)

应用:

  • 可以用于判断自变量与因变量之间的关系(比如:体重=0.5*身高+μ(随机数))
  • 可以根据得出的字变量与因变量之间的关系,并对自变量做出变化,从而对结果进行预判(比如:赚的钱=工作时间*0.6+接单数量*0.2+μ)

原理思路:

      简单来说就是使得样本都尽可能的接近这个公式,那么问题就来了,如何尽可能的接近这个公式呢?

      换成数学公式来理解也就是(得出尽可能让结果小的未知参数w,b使得每个样本预测结果与实际结果尽可能接近),于是我们通过对这两个参数分别求导就可得出相应的参数公式。

可分别得出:,这两个参数对应的解,也就是使得样本预测结果与实际结果尽可能接近的解。

 

接下来用代码写写这两个参数的公式:

#w参数的公式
def w_weight(a):
    sum_number=((a[:,0]-a[:,0].mean())*a[:,1]).sum()
    sum_number_2=(a[:,0]*a[:,0]).sum()
    sum_number_3=math.pow(a[:,0].sum(),2)*(1/a.shape[0])
    w_result=sum_number/(sum_number_2-sum_number_3)
    return w_result

#b参数的公式
def b_weigth(w_result,a):
    b_result=(a[:,1]-w_result*a[:,0]).sum()*(1/1/a.shape[0])
    return b_result

最后奉上一个完整的例子及完整的代码:

import numpy as np
import math

a=np.array([[1,2],[2,4],[3,6],[5,10]])
 
def w_weight(a):
    #sum_number代表的就是公式中分子部份
    sum_number=((a[:,0]-a[:,0].mean())*a[:,1]).sum()
    sum_number_2=(a[:,0]*a[:,0]).sum()
    sum_number_3=math.pow(a[:,0].sum(),2)*(1/a.shape[0])
    w_result=sum_number/(sum_number_2-sum_number_3)
    return w_result

def b_weigth(w_result,a):
    b_result=(a[:,1]-w_result*a[:,0]).sum()*(1/1/a.shape[0])
    return b_result
    
w_result=w_weight(a)
b_result=b_weigth(w_result,a)
formula=str(w_result)+'x'+'+'+str(b_result)
print(formula)

最后再总结一下把,对于咱应用算法的来说其实整套理论下来并不是特别重要,对于咱最重要的是最后的参数公式及相应的应用场景!所以咱如果能把原理大致了解,然后将其应用在相应的场景下,就已经是很不错拉!!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值