需要掌握
概述
线性回归是
线性公式:f(x)=ax+b
预测目标
预测函数f(x)与真实值之间的整体误差最小
为了让误差最小,就需要求解最合理的a和b
损失函数
使用 均方误差 作为损失函数
https://www.malaoshi.top/show_1EF3qTvZH2yB.html
优化
为了找到合适的a和b,让均方误差尽可能的小,需要使用梯度下降算法
https://www.malaoshi.top/show_1EF44cFgc3QB.html
tf.keras实现线性回归
生成数据
import numpy as np
import matplotlib.pyplot as plt
# 记录的总数
count=1000
# 父母平均身高
parent_height=np.linspace(1.65,1.85,count)
# 根据高尔顿的规律,生成孩子的身高
y= 0.8567+0.516*parent_height
# 以上面孩子的身高为基础,生成正态分布的随机身高
son_height=np.random.normal(loc=y, scale=0.03, size=count)
# print(son_height)
# 画成图像,便于理解
plt.plot(parent_height,y,color='red')
plt.scatter(parent_height,son_height)
plt.show()
实现线性回归
import tensorflow as tf
# 使用顺序模型
model=tf.keras.Sequential()
# 添加Dense层,该层实现y=wx+b
model.add(tf.keras.layers.Dense(1,input_shape=(1,)))
# 显示摘要信息
model.summary()
# 指定梯度下降,损失函数是均方误差
model.compile(optimizer='adam',loss='mse')
#
history=model.fit(parent_height,son_height,epochs=500)
# 打印预测的w和b的值,观察与真实的w和b的值
w,b=model.layers[0].get_weights()
print('w:',w,', b=',b)
# 预测
model.predict(parent_height)
