文章目录
- 环境配置(必看)
- 线性回归
- 代码工程
- 运行结果
- 1.对比图
- 2.运行结果
环境配置(必看)
Anaconda-创建虚拟环境的手把手教程相关环境配置看此篇文章,本专栏深度学习相关的版本和配置,均按照此篇文章进行安装。
线性回归
代码工程
import keras
import numpy as np
import matplotlib.pyplot as pltfrom keras import layers
from tensorflow.keras import layersdef 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
说明此模型针对线性回归的预测效果还不错