本文简单介绍了最基本的线性回归。并使用tensorflow使用梯度下降算法进行了训练。现在只是简单了解一下,后面一节会具体介绍梯度下降算法的原理。

单变量线性回归

单变量线性回归就是从一个输入值预测一个输出值。输入/输出的对应关系就是一个线性函数。f(x)=ax+b

下面是一个根据学历预测年收入的例子。假设有一个数据集,我们称作训练集,数据集学历值收入

x:表示输入变量,也叫特征变量。

y:表示输出变量,也叫目标变量。

import tensorflow as tf
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv("Income1.csv")
# print(data)
plt.scatter(data.Education, data.Income)
plt.show()

求解结果

上面的就有一个简单的线性关系。

预测目标和损失函数

目标:预测函数f(x)与真实值之间的整体误差最小。

如何定义最小误差?

损失函数:使用均方差作为成本函数,也就是预测值和真实值之间差的平方取均值。

优化的目标(y代表实际的收入):找到一个a和b,使得(f(x) — y)²/n越小越好。现在是求解a和b。

如何优化?使用梯度下降算法。

使用Keras实现预测

数据集还是用前面的学历和收入。

import tensorflow as tf
import pandas as pd
import matplotlib.pyplot as plt

data = pd.read_csv("Income1.csv")
# print(data)
x = data.Education
y = data.Income
model = tf.keras.Sequential()
model.add(tf.keras.layers.Dense(1, input_shape=(1,)))  # input_shape=(1,)是告知输入的维度是1,第一个输入的维度也是1

model.compile(optimizer="adam",   # 优化算法
              loss="mse"
              )
history = model.fit(x, y, epochs=5000)

# 进行预测
print(model.predict(pd.Series([20])))

计算结果

(由于为了方便记录,不是每次运行都要重新训练,决定开始用Notebook进行演示)


训练的数据(将下表数据保存成.csv格式即可):

Education Income
1 10 26.65884
2 10.40134 27.30644
3 10.84281 22.13241
4 11.24415 21.16984
5 11.64548 15.19263
6 12.08696 26.39895
7 12.48829 17.43531
8 12.88963 25.50789
9 13.29097 36.88459
10 13.73244 39.66611
11 14.13378 34.39628
12 14.53512 41.49799
13 14.97659 44.98157
14 15.37793 47.0396
15 15.77926 48.25258
16 16.22074 57.03425
17 16.62207 51.49092
18 17.02341 61.33662
19 17.46488 57.58199
20 17.86622 68.55371
21 18.26756 64.31093
22 18.70903 68.95901
23 19.11037 74.61464
24 19.51171 71.8672
25 19.91304 76.09814
26 20.35452 75.77522
27 20.75585 72.48606
28 21.15719 77.35502
29 21.59866 72.11879
30 22 80.26057

博主个人公众号
版权声明 ▶ 本网站名称:陶小桃Blog
▶ 本文链接:https://www.52txr.cn/2022/tfKeras.html
▶ 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行核实删除。
▶ 转载本站文章需要遵守:商业转载请联系站长,非商业转载请注明出处!!

最后修改:2022 年 09 月 07 日
如果觉得我的文章对你有用,请随意赞赏