使用梯度下降方法实现线性回归算法(使用梯度下降方法实现线性回归算法的是)

使用梯度下降方法实现线性回归算法(使用梯度下降方法实现线性回归算法的是)将数据值限制在一定的范围之内使所有属性处于同一个范围 同一个数量级下更快收敛到最优解提高学习精度 对原始数据的线性变换等比例缩放所以数据被映射到 0 1 之间 将数据集归一化为均值为 0 方差为 1 的标准正态分布 对原始数据的非线性变换指数 对数 正切 import numpy as np x1 0 np array 137 97 104 50 100 124 32 79 20 99 0

大家好,我是讯享网,很高兴认识大家。



将数据值限制在一定的范围之内
使所有属性处于同一个范围,同一个数量级下
更快收敛到最优解
提高学习精度

对原始数据的线性变换
等比例缩放
所以数据被映射到【0,1】之间

将数据集归一化为均值为0,方差为1的标准正态分布

import numpy as np

x1_0=np.array([137.97,104.50,100,124.32,

             79.20,99.0,124,114,

             106.69,138.05,53.75,46.91,

             68,63.02,81.26,86.21])

x2_0=np.array([3,2,2,3,

             1,2,3,2,

             2,3,1,1,

             1,1,2,2])

x1=(x1_0-x1_0.min())/(x1_0.max()-x1_0.min())

x2=(x2_0-x2_0.min())/(x2_0.max()-x2_0.min())

x1,x2

import numpy as np

import matplotlib.pyplot as plt

plt.rcParams[‘font.sans-serif’]=[“SimHei”]

x1_0=np.array([137.97,104.50,100,124.32,

             79.20,99.0,124,114,

             106.69,138.05,53.75,46.91,

             68,63.02,81.26,86.21])

x2_0=np.array([3,2,2,3,

             1,2,3,2,

             2,3,1,1,

             1,1,2,2])

y=np.array([145,110,93,116,


讯享网

              65.32,104,118,91,

              62,133,51,45,

              78.50,69.65,75.69,95.30])

num=len(y)

x0=np.ones(num)

x1=(x1_0-x1_0.min())/(x1_0.max()-x1_0.min())

x2=(x2_0-x2_0.min())/(x2_0.max()-x2_0.min())

X=np.stack((x0,x1,x2),axis=1)

Y=y.reshape(-1,1)

X.shape,Y.shape

# 设置超参数

learn_rate=0.001

iter=500

display_step=50

# 设置模型参数初值

np.random.seed(612)

W=np.random.randn(3,1)

# 训练模型

mse=[]

for i in range(0,iter+1):

    

    dL_dW=np.matmul(np.transpose(X),np.matmul(X,W)-Y)

  

    

    W=W-learn_rate*dL_dW

    

    PRED=np.matmul(X,W)

    Loss=np.mean(np.square(Y-PRED))/2

    mse.append(Loss)

    

    if i%display_step==0:

        print(“i: %i, Loss: %f” % (i,mse[i]))

# 结果可视化

plt.figure(figsize=(12,4))

plt.subplot(1,2,1)

plt.plot(mse)

plt.xlabel(‘Iteration’,fontsize=14)

plt.xlabel(‘Loss’,fontsize=14)

plt.subplot(1,2,2)

PRED=PRED.reshape(-1)

plt.plot(y,color=‘red’,marker=‘o’,label=‘样本值’)

plt.plot(PRED,color=‘blue’,marker=‘.’,label=‘预测值’)

plt.xlabel(“x”,fontsize=14)

plt.ylabel(“y”,fontsize=14)

plt.legend()

plt.show()

小讯
上一篇 2025-06-11 23:11
下一篇 2025-05-16 21:40

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/204310.html