tensorflow2知识总结---1、线性回归实例
一、总结
一句话总结:
第一步:创建模型:model = tf.keras.Sequential() 后面用model的add方法添加layers就好
第二步:训练模型:history = model.fit(x,y,epochs=5000)
第三步:用训练好的模型做预测:y1 = model.predict(x)
第一步:创建模型 #4.tf.keras实现线性回归 x = data.Education y = data.Income # 顺序模型 model = tf.keras.Sequential() # 添加dense层 model.add(tf.keras.layers.Dense(1,input_shape=(1,))) # ax+b model.summary() 第二步:训练模型 # 优化算法 梯度下降adam,学习速率使用的是默认的 # MSE均方误差 model.compile(optimizer='adam',loss='mse') history = model.fit(x,y,epochs=5000) #epochs表示训练的次数 第三步:用训练好的模型做预测 y1 = model.predict(x) # 预测20年教育的收入 model.predict(pd.Series([20]))
1、pandas读取csv文件?
data = pd.read_csv('./dataset/income.csv')
2、matplotlib画散点图?
plt.scatter(data.Education,data.Income)
import matplotlib.pyplot as plt %matplotlib inline plt.scatter(data.Education,data.Income)
3、tensorflow2创建线性回归模型(创建模型过程)?
a、顺序模型:model = tf.keras.Sequential()
b、添加dense层:model.add(tf.keras.layers.Dense(1,input_shape=(1,)))
c、模型概况(比如每层网络有多少待求参数):model.summary()
4、模型添加时候model.add(tf.keras.layers.Dense(1,input_shape=(1,))) 是什么意思?
Dense(1,input_shape=(1,))中的前一个1表示一个神经元,input_shape中的1表示输入数据是1维
5、线性回归函数和神经网络的关系?
线性回归函数可以看做单个神经元
6、tensorflow2线性回归模型 训练模型过程?
A、设定优化算法:model.compile(optimizer='adam',loss='mse')
B、训练过程:history = model.fit(x,y,epochs=5000)
# 优化算法 梯度下降adam,学习速率使用的是默认的 # MSE均方误差 model.compile(optimizer='adam',loss='mse') history = model.fit(x,y,epochs=5000) #epochs表示训练的次数
7、tensorflow2线性回归模型 预测过程?
model对象的predict方法:y1 = model.predict(x)
# 预测20年教育的收入 model.predict(pd.Series([20]))
二、线性回归实例
博客对应课程的视频位置:
In [35]:
import pandas as pd
data = pd.read_csv('./dataset/income.csv')
data
Out[35]:
In [36]:
import matplotlib.pyplot as plt
%matplotlib inline
plt.scatter(data.Education,data.Income)
Out[36]:
找到合适的a和b,使得(f(x)-y)^2越小越好
In [37]:
#4.tf.keras实现线性回归
x = data.Education
y = data.Income
# 顺序模型
model = tf.keras.Sequential()
# 添加dense层
model.add(tf.keras.layers.Dense(1,input_shape=(1,)))
# ax+b
model.summary()
(None, 1) 中的None是样本的维度
Param是两个,也就是a和b
In [39]:
# 优化算法 梯度下降adam,学习速率使用的是默认的
# MSE均方误差
model.compile(optimizer='adam',loss='mse')
history = model.fit(x,y,epochs=5000) #epochs表示训练的次数
In [40]:
# 预测x
y1 = model.predict(x)
y1
Out[40]:
x = data.Education
y = data.Income
plt.scatter(x,y)
pred_y= w*x+b
plt.plot(x,pred_y,c='r')
线性回归函数可以看做单个神经元