import numpy as np
import matplotlib.pyplot as plt
x_data=[1,2,3]
y_data=[2,4,6]
def forword(x):
return x*w
def loss(x,y):
y_pred=forword(x)
return (y_pred-y)*(y_pred-y)
w_list=[] #随机w
mse_list=[] #mean square error=每个w对应的损失函数
for w in np.arange(0,4,0.1):
print('w=',w)
l_sum=0
for x_val,y_val in zip(x_data,y_data):#将x_data和y_data用zip拼成x_val y_val
y_pred_val=forword(x_val) #求y尖
loss_val=loss(x_val,y_val) #预测值y^和真实值y之间的平方差,损失函数
l_sum+=loss_val #求每个样本损失函数之和
print('x=',x_val,'y=',y_val,'y^=',y_pred_val,'每个样本的损失函数:',loss_val)
print('dataset数据集的平均损失函数mse:', l_sum / 3)
w_list.append(w)#w[]列表追加元素w
mse_list.append(l_sum / 3)#mse[]列表追加元素新的平均损失函数
plt.plot(w_list,mse_list)
plt.ylabel('Loss')
plt.xlabel('w')
plt.show()