理解线性回归算法(Linear Regression)

一、线性回归算法的理解

线性回归属于监督机器学习的一种算法,确定唯一一个因变量(需要预测的值)和一个或多个自变量(预测变量:x)之间的关系,求得需要预测的最优解,即为 模型 model 

需要预测的值:y / target   为连续性的值;

预测变量:X1...Xn 个连续或离散型的的值;

1)简单线性回归

y=ax+b + ϵ (残差)(一元线性方程)

这个公式虽普通,但却是人工智能的一种‘回归’算法,当x,y有多组值时,可求解出多种不同的 a,b 的值,这种情况下要求得他们的最优解,那么就需要线性回归算法

2)如何求得最优解

真实值:  已知的 y

预测值:将已知的 x 带入猜想的 a,b 所得到的 y' 值

残/误差 ϵ:y 的真实值与预测值的距离差,是一个期望为0的随机变量,即E(ϵ)=0,服从正态分布的随机变量,且相互独立,即ϵ~N(0,σ^2)

损失(Loss):整体的误差,通过损失函数(Loss function)求得

最优解:使得整体的误差最小的模型

Loss function = 1/m* \sum_{}^{} (y-y')^2    

3)多元线性回归

y = w0+ w1*x1+w2*x2+ ... +wn*xn  + ϵ (残差)(y 由多个参数控制)

y' = w0+ w1*x1+w2*x2+ ... +wn*xn

4)  线性代数方法表示多元线性回归 (点乘)

y = W^T . X + ϵ (残差) ( W ,X为n行1列的矩阵)

y = X . W+ ϵ  ( W 为n行1列的矩阵,X 为n行n列的矩阵)

二、线性回归算法的实现 

1)线性回归 X,y  y=ax+b+ϵ
创建模型

import random
import numpy as np
import matplotlib.pyplot as plt

# np.random.seed(610)  固定随机数
X = 2 * np.random.rand(100, 1)
# 自己猜想的回归函数 y
y = 5 + 3 * X + np.random.rand(100, 1)
# 在X矩阵前加一列全为一的矩阵来求 截距的w0
x1 = np.c_[np.ones((100, 1)), X]
# 求出权重参数 a,b 的值
w = np.linalg.inv(x1.T.dot(x1)).dot(x1.T).dot(y)
print(w)
print('-' * 50)

2)使用模型进行预测

训练模型

#定义一个二维数组
x_=np.array([[0],[2]])
#在二维数组前加一列全为一的矩阵
x_1=np.c_[np.ones((2,1)),x_]
print(x_1)
# y'=X.W 将创建的模型的w带入公式
y_predict=x_1.dot(w)
print(y_predict)

3)绘图显示模型预测

显示回归模型

plt.plot(x_,y_predict,'r-')
plt.plot(X,y,'b.')
plt.axis([0,2,0,13])
plt.show()

4)结果展示

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值