将数据值限制在一定的范围之内
使所有属性处于同一个范围,同一个数量级下
更快收敛到最优解
提高学习精度
对原始数据的线性变换
等比例缩放
所以数据被映射到【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()

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