本站原创文章,转载请说明来自《老饼讲解-机器学习》ml.bbbdata.com
本文展示一个线性回归的使用例子,
包括自行求解的代码Demo及调用sklearn包求解的代码代码Demo
问题
现有数据以下
需要我们建立线性模型,用变量 x1,x2 预测y
✍️备注
以上数据的实际关系为:
我们建完模可以回头看看建模的结果与这个是否一致
本节我们梳理用线性回归建模的整体思路
建模思路梳理
建模思路如下
确定模型
假设变量服从线性关系,得到模型
求取最佳的W
实际操作步骤很简单,
只要把X添加一列1,然后用求解公式求解W就可以了,
再代回模型表达式,就能得到模型
本节通过自写代码求解和调包求解两种方法,实现线性回归模型求解
方法一:自写代码
根据线性回归模型的求解公式,进行求解即可
python代码如下:
from sklearn import linear_model
import numpy as np
#输入数据
x = np.array([[0, 2], [1, 1], [2,3],[3,2],[4,5],[5,2]])
y = np.array([8,7,15,14,25,18])
# 给x添加一列1
xt = np.insert(x, x.shape[1], 1, axis=1)
#按公式求解w,其中inv的功能是求矩阵的逆,@是矩阵的乘法
w = np.linalg.inv(xt.T@xt)@xt.T@y
#输出W
print("模型参数W:"+str(w))
运行结果如下
模型参数W:[2. 3. 2.]
模型回代
得到了W,代入模型,
就得到我们最终的模型:
有新的样本过来时,我们就可以用上式进行预测
方法二:用sklearn包
我们也可以用python机器学习包的sklearn的线性模型方法求解
借助sklearn包求解的python代码如下
from sklearn import linear_model
import numpy as np
#输入数据
x = np.array([[0, 2], [1, 1], [2,3],[3,2],[4,5],[5,2]])
y = np.array([8,7,15,14,25,18])
#调用sklearn的线性模型包,训练数据
reg = linear_model.LinearRegression()
reg.fit(x,y)
#输出系数和阈值
print("模型参数:"+str(reg.coef_))
print("模型阈值:"+str(reg.intercept_))
运行结果如下
模型参数:[2. 3.]
模型阈值:1.9999999999999982
模型回代
代入模型,即有:
End