tensorflow实现线性回归
单变量线性回归x,y
单变量线性回归算法,比如表示学历,f(x)表示收入:
f
(
x
)
=
a
x
+
b
f(x) = ax + b
f(x)=ax+b
使用f(x)映射输入值和输出值。通过训练来实现预测。
预测目标与损失函数:我们的目标是预测函数f(x)与真实值之间的在整体误差最小。
f
(
x
)
预
−
f
(
x
)
真
f(x)预-f(x)真
f(x)预−f(x)真
但是两者之间的差值,可正可负;那么对应函数可以使用均方差来实现成本函数,也就是预测值和真实值之间差的平方取均值。
优化目标:找到一个合适的a和b,使得(f(x)-y)^2越小越好。
使用tf.keras建立模型
导入数据集,查看散点图
#tf.keras实现线性回归
import tensorflow as tf
print("Tensorflow Version:",tf.__version__)#查看Tensorflow版本
import pandas as pd#引入pandas,导入数据
data = pd.read_csv('./Desktop/csv.csv')
import matplotlib.pyplot as plt#引入plt
%matplotlib inline
#x轴是Education,y轴是Income,scatter(x,y)表示散点图
plt.scatter(data.Education,data.Income)
构建模型->训练->预测
x = data.Education
y = data.Income
#顺序模型
model = tf.keras.Sequential()
#Dense(w,e) w:表示输出维度,e表示输入维度
model.add(tf.keras.layers.Dense(1,input_shape=(1,)))
model.summary()#查看模型结构
#optimizer='adam'表示优化方法,loss='mse'表示损
model.compile(optimizer='adam',loss='mse')
history = model.fit(x,y,epochs=5000)#epochs表示训练次数
#使用model进行预测
model.predict(pd.Series([20]))
这里遗留的问题,优化函数optimizer='adam’和损失函数loss='mse’怎么理解?
使用到的数据集:
Education Income
1 10.000000 26.658839
2 10.401338 27.306435
3 10.842809 22.132410
4 11.244147 21.169841
5 11.645449 15.192634
6 12.086957 26.398951
7 12.048829 17.435307
8 12.889632 25.507885
9 13.290970 36.884595
10 13.732441 39.666109
11 14.133779 34.396281
12 14.635117 41.497994
13 14.978589 44.981575
14 15.377926 47.039595
15 15.779264 48.252578
16 16.220736 57.034251
17 16.622074 51.490919
18 17.023411 51.336621
19 17.464883 57.681998
20 17.866221 68.553714
21 18.267559 64.310925
22 18.709030 68.959009
23 19.110368 74.614639
24 19.511706 71.867195
25 19.913043 76.098135
26 20.354515 75.775216
27 20.755853 72.486055
28 21.167191 77.355021
29 21.598662 72.118790
30 22.000000 80.260571