线性模型
y=wx
数据集:
x | y |
---|---|
1.0 | 2.0 |
2.0 | 4.0 |
3.0 | 6.0 |
4.0 | ? |
代码实现:
# Author:gt
# CreatTime:2021/10/29
# FileName:lesson1.py
#线性模型
import numpy as np
import matplotlib.pyplot as plt
#准备数据集
x_train=[1.0,2.0,3.0]
y_train=[2.0,4.0,6.0]
#模型
def forward(x):#一次接收一个数值
return w*x
#定义损失函数(是单个样本的)
#每一次前向传播后才能得到预测值
def loss(x,y):
y_pre=forward(x)
return (y_pre-y)**2
#保存每次的w取值
w_list=[]
#保存每次的损失值mse
mse_list=[]
#手动给出w的值
for w in np.arange(0.0,4.0,0.1):
print("本次w的取值:",w)
l_sum=0
for x_val,y_val in zip(x_train,y_train):#计算所有样本在同一个w取值下的损失
y_pre=forward(x_val)
loss_val=loss(x_val,y_val)
l_sum+=loss_val#损失值进行累加
print('\t',x_val,y_val,y_pre,loss_val)#输出单个样本输入数据,预测数据,损失值
print('MSE=',l_sum/3)
w_list.append(w)#将此次循环用于计算的w保存到列表
mse_list.append(l_sum)
#画图观察mse和w之间的函数关系
#plt.rcParams['font.sans-serif']=['SimHei']
#plt.rcParams['axes.unicode_minus'] = False
plt.title("cost function")
plt.xlabel("w's value")
plt.ylabel("mse's value'")#总体样本均值
plt.plot(w_list,mse_list)
plt.show()
执行结果:
完结,撒花,接下来写作业