使用 Keras 进行回归(使用伪造变造机动车号牌怎么处罚)

网友投稿 238 2022-09-07


使用 Keras 进行回归(使用伪造变造机动车号牌怎么处罚)

1 介绍 2

2 使用 Keras 进行回归 2

3 问题陈述 3

4 评估指标 3

5 步骤 3

5.1 第 1 步 - 加载所需的库和模块 4

5.2 第 2 步 - 读取数据并执行基本数据检查 4

5.3 第 3 步 - 为特征和响应变量创建数组 5

5.4 第 4 步 - 创建训练和测试数据集 5

5.5 第 5 步 - 构建深度学习回归模型 6

5.6 第 6 步 - 预测测试数据并计算评估指标 7

5.7 模型性能评估 7

6 结论 8

1 介绍

深度学习是当今数据科学中最热门的话题之一。 鉴于正在使用深度学习开发大量迷人的应用程序,例如自动驾驶汽车、颜色恢复、自然语言处理、自动机器翻译、图像分类等等,这并不奇怪。

那里有许多深度学习库,但最受欢迎的是 TensorFlow、Keras 和 PyTorch。 尽管 TensorFlow 和 Pytorch 非常受欢迎,但它们并不易于使用并且学习曲线陡峭。 所以,对于很多从业者来说,Keras 是首选。

Keras 库是一个用于构建深度学习模型的高级 API,因其易于使用和便于快速开发而受到青睐。 通常,只需几行代码即可使用 Keras 构建一个非常复杂的深度学习网络。

在本指南中,我们将重点介绍如何使用 Keras 库来构建回归模型。

2 使用 Keras 进行回归

回归是一种用于预测连续标签的监督机器学习算法。 目标是根据评估标准生成一个模型,该模型代表某些观察数据的“最佳拟合”。我们将遵循的深度学习神经网络的基本架构由三个主要组件组成。

1)输入层:这是输入训练观察的地方。 预测变量的数量也通过神经元在这里指定。

2)隐藏层:这些是输入和输出层之间的中间层。 深度神经网络了解该组件中数据所涉及的关系。

3)输出层:这是从前两层发生的事情中提取最终输出的层。 在回归问题的情况下,稍后的输出将有一个神经元。

3 问题陈述

失业是任何国家的重大社会经济和政治问题,因此,管理失业是任何政府的首要任务。 但要管理经济体中的失业,也必须对其进行预测。 这就是本指南旨在实现的目标。 该指南将使用 Keras 构建一个深度学习回归模型来预测失业。

本项目中使用的数据来自 提供的美国经济时间序列数据。 数据包含 574 行和 5 个变量,如下所述:

psavert - personal savings rate.pce - personal consumption expenditures, in billions of dollars.uempmed - median duration of unemployment, in weeks.pop - total population, in thousands.unemploy- number of unemployed in thousands (dependent variable).

4 评估指标

我们将使用均方根误差 (RMSE) 评估模型的性能,这是回归问题的常用指标。 简单来说,RMSE 测量残差或误差的平均幅度。 在数学上,它被计算为预测值和实际值之间的平方差的平均值的平方根。

5 步骤

以下是使用 Keras 实现回归模型时通常遵循的步骤。

第 1 步 - 加载所需的库和模块。

第 2 步 - 加载数据并执行基本数据检查。

第 3 步 - 为特征和响应变量创建数组。

第 4 步 - 创建训练和测试数据集。

第 5 步 - 定义、编译和拟合 Keras 回归模型。

第 6 步 - 预测测试数据并计算评估指标。

以下部分将介绍这些步骤。

5.1 第 1 步 - 加载所需的库和模块

import pandas as pdimport numpy as np import matplotlib.pyplot as pltimport sklearnfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import mean_squared_errorfrom math import sqrtimport kerasfrom keras.models import Sequentialfrom keras.layers import Dense

5.2 第 2 步 - 读取数据并执行基本数据检查

第一行代码将数据作为 pandas 数据框读取,而第二行代码打印形状 - 5 个变量的 574 个观察值。 第三行给出数值变量的汇总统计。 我们可以看到所有变量都有 574 作为“计数”,这等于数据集中的记录数。 这意味着我们没有缺失值。

5.3 第 3 步 - 为特征和响应变量创建数组

第一行代码创建了目标变量的对象,而第二行代码为我们提供了所有特征的列表,不包括目标变量“unemploy”。

第三行对预测变量进行归一化。 这很重要,因为变量的单位差异很大,可能会影响建模过程。 为了防止这种情况,我们将通过在 0 和 1 之间缩放预测变量来进行归一化。

第四行显示标准化数据的摘要。 我们可以看到所有自变量现在都在 0 和 1 之间缩放。目标变量保持不变。

target_column = ['unemploy'] predictors = list(set(list(df.columns))-set(target_column))df[predictors] = df[predictors]/df[predictors].max()df.describe()

5.4 第 4 步 - 创建训练和测试数据集

前几行分别创建了独立 (X) 和因 (y) 变量的数组。 第三行将数据拆分为训练和测试数据集,而第四行打印训练集(4 个变量的 401 个观察值)和测试集(4 个变量的 173 个观察值)的形状。

X = df[predictors].valuesy = df[target_column].valuesX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=40)print(X_train.shape); print(X_test.shape)

5.5 第 5 步 - 构建深度学习回归模型

我们将在 Keras 中使用深度学习构建回归模型。 首先,我们将定义模型。 下面的第一行代码调用了 Sequential 构造函数。 请注意,我们将使用 Sequential 模型,因为我们的网络由线性堆叠的层组成。 第二行代码代表第一层,它指定激活函数和输入维数,在我们的例子中是 4 个预测变量。 然后我们在隐藏层的第三行和第四行代码中重复相同的过程,这次没有 input_dim 参数。 最后一行代码创建了一个带有一个节点的输出层,该节点应该输出以千计的失业人数。

隐藏层中使用的激活函数是一个整流线性单元,或 ReLU。 它是最广泛使用的激活函数,因为它具有非线性的优点,以及不能同时激活所有神经元的能力。 简单来说,这意味着一次只有少数几个神经元被激活,使得网络稀疏且非常高效。

model = Sequential()model.add(Dense(500, input_dim=4, activation= "relu"))model.add(Dense(100, activation= "relu"))model.add(Dense(50, activation= "relu"))model.add(Dense(1))model.summary()

下一步是定义优化器和训练的损失度量。 均方误差是我们的损失度量,“adam”优化器是我们的最小化算法。 “adam”优化器的主要优点是我们不需要像梯度下降那样指定学习率; 从而为我们节省了优化模型学习率的任务。 我们通过下面的第一行代码来完成这个任务。

第二行代码在训练数据集上拟合模型。 我们还提供了参数 epochs,它表示训练迭代的次数。 我们已经进行了 20 个 epoch。

model.compile(loss= "mean_squared_error" , optimizer="adam", metrics=["mean_squared_error"])model.fit(X_train, y_train, epochs=20)

5.6 第 6 步 - 预测测试数据并计算评估指标

第一行代码在训练数据上进行预测,而第二行代码在训练数据上打印 RMSE 值。 在第三和第四行代码中重复相同的内容,预测并打印测试数据上的 RMSE 值。

pred_train= model.predict(X_train)print(np.sqrt(mean_squared_error(y_train,pred_train)))pred= model.predict(X_test)print(np.sqrt(mean_squared_error(y_test,pred)))

5.7 模型性能评估

上面的输出显示,作为我们的评估指标,RMSE 是训练数据的 185.6 万和测试数据的 182.5 万。 理想情况下,RMSE 值越低,模型性能越好。 然而,与准确性相比,解释 RMSE 并不简单,因为我们必须查看在我们的例子中以千为单位的单位。

6 结论

在本指南中,我们使用深度学习框架 Keras 构建了回归模型。该指南使用美国经济学时间序列数据,并建立了深度学习回归模型来预测成千上万的失业人口数量。

我们的模型实现了稳定的性能,在训练集和测试集 RMSE 中变化不大。最理想的结果是 RMSE 值为零,但这在实际经济数据集中几乎是不可能的。此外,由于目标变量的单位是千,这也会影响 RMSE 值。

还有其他的迭代比如改变神经元的数量,增加更多的隐藏层,或者增加epoch的数量,可以试试看对模型性能的影响。

这个回归问题也可以使用其他算法建模,例如决策树、随机森林、梯度提升或支持向量机。但是,这不在本指南的范围内,本指南旨在使个人能够使用深度学习库 Keras 解决回归问题。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:YOLOv3-tiny在VS2015上使用Openvino部署
下一篇:Java实现4种微信抢红包算法(小结)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~