文章目录
- 环境配置(必看)
- 线性回归
- 代码工程
- 运行结果
- 1.对比图
- 2.运行结果
环境配置(必看)
Anaconda-创建虚拟环境的手把手教程相关环境配置看此篇文章,本专栏深度学习相关的版本和配置,均按照此篇文章进行安装。
线性回归
代码工程
import keras
import numpy as np
import matplotlib.pyplot as plt
from keras import layers
from tensorflow.keras import layers
def myregression():
"""
自实现一个线性回归预测
:return:
"""
# 1.x 构造数据
x = np.linspace(0, 100, 30)
# 2.目标数据
y = 3 * x + np.random.randn() * 2
# 3.初始化模型 Sequential--顺序模型
model = keras.Sequential()
# 4.添加层 Dense(输出数据的维度,输入数据的维度)
# y = a * x + b 从模型可以看出,输出和输出都是1维的
model.add(layers.Dense(1, input_dim=1, name='abc'))
# 5.可以输出模型的层结构
model.summary()
# 6.编译模型
# optimizer='adam' - 内置优化算法, loss='mse'--损失函数--均方差
model.compile(optimizer='adam', loss='mse')
# 7.训练模型
# epochs -- 把所有的数据训练多少次
model.fit(x, y, epochs=7000)
# 8.预测
# print(model.predict(x))
# 添加标题,x轴坐标,y轴坐标的标签,fontsize代表字体大小
plt.title("linear regression", fontsize=24)
plt.xlabel("input", fontsize=14)
plt.ylabel("output of Value", fontsize=14)
plt.scatter(x, y, c='r') # 红色的点图是y = 3 * x + np.random.randn() * 2的图
plt.plot(x, model.predict(x)) # 蓝色的线图是预测的图
plt.show()
# 预测具体的x的值 所对应的y值
print("x输入150,对应的预测值为->:", model.predict([150]))
# 输出权重
abcd = model.get_layer('abc')
print(abcd.weights)
myregression() # 记得运行函数
运行结果
1.对比图
红色的点图是y = 3 * x + np.random.randn() * 2的图
蓝色的线图是预测的图
可以看出二者的趋势是吻合的,说明我们训练的模型效果还不错
2.运行结果
一共训练了7000次,可以看到 loss 的值已经出现了过拟合的一个状态,所以大家在训练时这个模型的model.fit(x, y, epochs=7000),epochs可以设置为6000看看状态。
从下图中可以看出
对训练好的模型输入150,输出455.9168
权重值:3.0267823
偏差值:1.8994627
对比我们设置的y = 3 * x + np.random.randn() * 2
说明此模型针对线性回归的预测效果还不错