【机器学习】python基础实现线性回归

手写梯度下降的实现y=kx+b的线性回归

算法步骤:

(1)构造数据,y=3*x+5;

(2)随机初始化和,任意数值,例如=9,=10;

(3)计算,,并计算

(4)分别对和求导数,,

其中

重复循环n次后停止

构造线性函数:

代码实现:

python 复制代码
X=[i for i in range(0,15)]

k=3
b=5
Y=[k*i+b for i in X]

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

# 在同一个图形中绘制散点图和折线图
ax.scatter(X, Y, color='blue', label='scatter')
ax.plot(X, Y, color='red', label='line')

# 添加图例
ax.legend()

# 显示图形
plt.show()

MSE损失函数:

python 复制代码
loss.append((Y[i]-y_[i])**2)  #公式对应代码

分别对k和b求导结果如图所示:

python 复制代码
#公式对应代码
delta_K_sum.append((Y[i]-y_[i])*(-2)*X[i])
delta_B_sum.append((Y[i]-y_[i])*(-2))

全部代码:

python 复制代码
X=[i for i in range(0,15)]
X
k=3
b=5
Y=[k*i+b for i in X]
Y
import matplotlib.pyplot as plt
# 创建散点图
plt.scatter(X, Y)

# 显示图形
plt.show()
#随机初始化要求的k和b
K=8
B=10
#k和b是正确答案,根据数据和随机初始化的K和B去拟合函数,找到最优的k和b
#y=Kx+B
loss=[]

#计算预测值
for i in range(1000):
    y_=[K*i+B for i in X]

    loss=[]
    for i in range(len(X)):
        loss.append((Y[i]-y_[i])**2)
    print(sum(loss)/len(loss))
    # cha=loss.sum()/len(loss)
    #计算loss

    #根据最小二乘法  对y_求导,等我用纸写一下,利用loss对K求梯度,去更新K的值,对B求梯度,求更新B的值
    #直到K和B基本拟合图像
    delta_K_sum=[]
    delta_B_sum=[]
    for i in range(len(X)):
        delta_K_sum.append((Y[i]-y_[i])*(-2)*X[i])
        delta_B_sum.append((Y[i]-y_[i])*(-2))
    delta_K=sum(delta_K_sum)/len(delta_K_sum)

    delta_B=sum(delta_B_sum)/len(delta_B_sum)
    #0.01是学习率,保证稳定收敛
    K=K-0.01*delta_K
    B=B-0.01*delta_B
    print(K,B)
print(K,B)

结果图像:

python 复制代码
X=[i for i in range(0,15)]

Y=[K*i+B for i in X]

import matplotlib.pyplot as plt
fig, ax = plt.subplots()

# 在同一个图形中绘制散点图和折线图
ax.scatter(X, Y, color='blue', label='scatter')
ax.plot(X, Y, color='red', label='line')

# 添加图例
ax.legend()

# 显示图形
plt.show()
相关推荐
codists11 分钟前
2026年8月文章一览
python
云和数据.ChenGuang15 分钟前
langchain4j的RAG入门
人工智能·深度学习·机器学习·语言模型·fastapi
外收内放20 分钟前
Python基础语法练习题(31-33)
开发语言·python
2601_9628857228 分钟前
如何用 Python 画 K 线图(蜡烛图)?(mplfinance + 均线 + 成交量)
开发语言·python
cg50171 小时前
大模型 SFT(监督微调)该怎么做?(实践版)
人工智能·深度学习·机器学习
Y3815326621 小时前
行业动态周报:用新闻 API 追踪一个赛道的声音变化
python·搜索引擎
零域码客2 小时前
零基础Python爬虫入门:从HTTP协议到 requests + BeautifulSoup 实战
爬虫·python·http
“AI国潮设计-小江”2 小时前
【SDXL实战】用AI生成“财神爷蛋糕×英歌舞人物”潮汕国潮甜品IP,附Prompt与批量生成思路
开发语言·人工智能·python·aigc
DD云验证2 小时前
DD云验证,免费网络验证系统
服务器·python·易语言·网络验证·卡密验证
茶栀(*´I`*)2 小时前
【Python数据分析利器】Pandas从入门到实战:核心数据结构DataFrame与Series全解析
python·数据分析·pandas