2.深度学习-线性回归

发布于:2024-06-16 ⋅ 阅读:(160) ⋅ 点赞:(0)

环境配置(必看)

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
说明此模型针对线性回归的预测效果还不错
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到