keras实现线性回归模型

机器学习基础与线性回归方程

笼统的定义:

机器学习研究如何让计算机不需要明确的程序也能具备学习能力。

什么是机器学习?

系统用来学习的这些示例,我们称之为训练集。每一个训练示例称为训练实例或者是训练样本。
在本例中,任务就是给新邮件标记垃圾邮件,经验则是训练数据,那么衡量性能表现的指标则需要我们来定义,例如,我们可以使用被正确分类的邮件的比率来衡量。这个特殊的性能衡量标准称为精度,经常用于衡量分类任务。

使用Keras实现一个简单地线性回归

单变量现行回归算法(比如,x代表学历,f(x)代表收入)

f(x) = ax + b
我们使用f(x)这个函数来映射输入特征和输出值

预测目标与损失函数

目标:
预测函数f(x)与真实值之间的整体误差最小
如何定义误差最小呢?

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

优化的目标(y代表实际的收入)∶
找到合适的a和b,使得(f(x)- y)^2越小越好
注意:现在求解的是参数a和b

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

from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
# %matplotlib inline 是IPython内置函数,在pycharm中使用会报错,我们可以使用plt.show()来替代它


x = np.linspace(0, 100, 30)  # 随机生成从0-100以内的30个数字
y = 3*x + 7 +np.random.randn(30)*6
plt.scatter(x, y)
plt.show()

运行后,可以生成如下图所示的图像:
keras实现线性回归模型_第1张图片
当我们只知道x和y的数据的时候,想要知道x和y是否存在线性关系,他们对应之间的线性关系是多少,可以从图像中看到x和y之间存在着y=ax+b的线性关系,所以我们要做的就是求出a和b,我们需要借助的就是kares

使用keras建立模型
keras常用的一个模型叫做sequential,即顺序模型

# 建立模型
model = keras.Sequntial()  # 顺序模型
layers.Dense   # 可以帮我们ax+b的
model.add(layers.Dense(1, input_dim=1))  # 告诉dense,输出的结果是1维的,输入的数据也是1维的
model.summary()  # 显示模型的参数

keras实现线性回归模型_第2张图片

model.compile(optimizer='adam', loss='mse')  # 编译模型
model.fit(x, y, epochs=3000)   # 训练模型

keras实现线性回归模型_第3张图片
… …
keras实现线性回归模型_第4张图片

plt.scatter(x,y,c='r')
plt.plot(x, model.predict(x))  # 画出预测值和实际值得区别
plt.show()

keras实现线性回归模型_第5张图片

model.predict(x)

array([[ 1.4852852],
[ 12.110953 ],
[ 22.736622 ],
[ 33.362293 ],
[ 43.98796 ],
[ 54.613632 ],
[ 65.239296 ],
[ 75.86497 ],
[ 86.49063 ],
[ 97.1163 ],
[107.741974 ],
[118.36764 ],
[128.99332 ],
[139.61899 ],
[150.24466 ],
[160.87032 ],
[171.49599 ],
[182.12166 ],
[192.74733 ],
[203.373 ],
[213.99867 ],
[224.62434 ],
[235.25 ],
[245.87569 ],
[256.50134 ],
[267.127 ],
[277.7527 ],
[288.37836 ],
[299.00403 ],
[309.6297 ]], dtype=float32)

model.predict([150])

array([[463.7019]], dtype=float32)

你可能感兴趣的:(keras学习过程记录,python,开发语言,后端)