今天给大家的介绍一下线性模型,线性回归模型虽说模型简单,但距今为止依旧在机器学习算法中占据一定的地位,不仅如此,而且在实际的业务应用中也是屡试不爽的机器学习算法。
线性回归模型公式: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)
最后再总结一下把,对于咱应用算法的来说其实整套理论下来并不是特别重要,对于咱最重要的是最后的参数公式及相应的应用场景!所以咱如果能把原理大致了解,然后将其应用在相应的场景下,就已经是很不错拉!!