机器学习-线性回归算法(梯度下降代码实现)

线性回归的模型是对存在线性关系的x,y进行拟合。同时时候一个有监督的学习。

线性回归算法原理

运算过程

1.设定模型
在这里插入图片描述
𝜃的值是随机创建

2.计算代价 cost mse 均方误差
在这里插入图片描述
3.计算梯度下降过程
  3.1计算𝜃的导数
  3.2更新𝜃的值

import numpy as np
import matplotlib.pyplot as plt

数据预处理的过程

x = np.array([4, 3, 3, 4, 2, 2, 0, 1, 2, 5, 1, 2, 5, 1, 3])
y = np.array([8, 6, 6, 7, 4, 4, 2, 4, 5, 9, 3, 4, 8, 3, 6])
m = len(x)#获取样本的数量
#x增加一列1
x = np.c_[np.ones([m, 1]), x]
print(x)
print(x.shape)
#为了后续维度对应,y也做维度变化
y = y.reshape(15, 1)
print(y.shape)
print(y)

𝜃的值是随机创建

theta = np.zeros([2, 1])
print(theta)

1.设定模型
在这里插入图片描述
2.计算代价 cost mse 均方误差
在这里插入图片描述
3.计算梯度下降过程
  3.1计算𝜃的导数 Δ𝜃=1/𝑚𝑥𝑇𝑒𝑟𝑟𝑜𝑟
  3.2更新𝜃的值
    𝜃:=𝜃−𝛼Δ𝜃

# 超参数alpha 学习率  步长
alpha = 0.01
#迭代次数
m_iter = 1000
#定义一个数组,存储所有的代价数据
cost = np.zeros([m_iter])
for i in range(m_iter):
    y_hat = x.dot(theta)#求预测值
    error = y_hat - y #误差值
    cost_val = 1 / 2 * m *error.T.dot(error)#代价值
    cost[i] = cost_val#记录代价值
    delta_theta = 1 / m * x.T.dot(error)#求导数
    theta = theta - alpha * delta_theta#更新参数
print(theta)
#使用图形进行演示
plt.scatter(x[:,1], y, c='blue')# x有两列数据
plt.plot(x[:, 1], y_hat, 'r-')#预测模型
plt.show()

在这里插入图片描述

#代价值的显示
plt.plot(cost)
plt.show()

在这里插入图片描述
其实这个效果并不好,后面的变化并不大,所以不需要迭代1000次,应该尽早结束!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值