提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
线性回归
Machine Learing
Training Set中有x与y共同参与输入输出
而Test Set中仅有x输入
需在训练过程中使误差降低才能在实际应用时更容易识别
二、线性回归代码及显示
1.课内平面代码
1.所使用库
import numpy as np
import matplotlib.pyplot as plt
2.
x_data=[1.0, 2.0, 3.0]
y_data=[2.0, 4.0, 6.0]
#数值写入
#写入函数关系
def forward(x):
return x*w
#写入损失函数
def loss(x, y):
y_pre = forward(x)
return (y_pre-y)*(y_pre-y)
#保存权重及其对应损失值
w_list=[]
mse_list=[]
#写入权重(参数)变化值
for w in np.arange(0.0,4.1,0.1):
print("w=",w)
l_sum=0
for x_val, y_val in zip(x_data, y_data):
y_pre_val=forward(x_val)
loss_val=loss(x_val, y_val)
l_sum=loss_val
print('\t',x_val,y_val,y_pre_val,loss_val)
print('MES=',l_sum/3)
w_list.append(w)
mse_list.append(l_sum/3)
3.绘图
plt.plot(w_list,mse_list)
plt.ylabel('loss')
plt.xlabel('w')#定义坐标轴
plt.show()
2.课后习题
1、导入库
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D #3d绘图需使用的库
2.
#创建二维【平面网络
x = [1.0,2.0,3.0]
y = [2.0,4.0,6.0]
w_list=np.arange(0.0,4.1,0.1)
b_list=np.arange(-2.0,2.1,0.1)
[w,b]=np.meshgrid(w_list,b_list)#生成二维网格、
#定义函数
def forward(x):
return x*w+b
#定义损失值
def loss(x,y):
y_pre = forward(x)
return (y_pre-y)*(y_pre-y)
#保存权重及其对应损失值
w_list=[]
b_list=[]
mse_list=[]
#计算过程
l_sum = 0
for x_val,y_val in zip(x,y):
y_pre_val=forward(x_val)
loss_val=loss(x_val, y_val)
l_sum+=loss_val
print(l_sum.shape)
3.绘图
#绘图
fig=plt.figure()
ax=Axes3D(fig)
ax.plot_surface(w,b,l_sum/3,cmap='rainbow')
plt.show()
总结
还有一个颜色棒没搞明白
下次再画
拜拜!