Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化

我们可以很容易地用Keras序列模型拟合回归数据并预测测试数据。

由Kaizong Ye,Sherry Deng撰写

在这篇文章中,我们将简要地学习如何用Python中的Keras神经网络API拟合回归数据。我们将用Keras回归和序列模型本身这两种方法检查模型。

  该教程涵盖了以下内容。

  • 准备数据
  • 定义模型
  • 用KerasRegressor进行拟合(准确度检查和结果的可视化)
  • 用序列模型进行拟合(准确度检查和结果可视化)。

我们将从加载所需的模块开始。

准备数据

×

模型确定

在做预测之前,首先得训练出一个最终的模型。你可能选择k折交叉验证或者简单划分训练/测试集的方法来训练模型,这样做的目的是为了合理估计模型在样本集之外数据上的表现(新数据)

当评估完成,这些模型存在的目的也达到了,就可以丢弃他们。接下来,你得用所有的可用数据训练出一个最终的模型。

分类预测

对于分类问题,模型学习的是一个输入特征到输出特征之间的映射,这里的输出即为一个标签。比如“垃圾邮件”和“非垃圾邮件”


继续说回到分类预测的问题。我们希望最终得到的模型能进行两种预测:一是判断出类别,二是给出属于相应类别概率。

  • 类预测

一个类别预测会给定最终的模型以及若干数据实例,我们利用模型来判断这些实例的类别。对于新数据,我们不知道输出的是什么结果,这就是为什么首先需要一个模型。

在Keras中,可以利用predict_class()函数来完成我们上述所说的内容—-即利用最终的模型预测新数据样本的类别。

需要注意的是,这个函数仅适用于Sequential模型,不适于使用功能式API开发的模型。(not those models developed using the functional API.)

比如,我们在名为Xnew的数组中有若干个数据实例,它被传入predict_classes()函数中,用来对这些数据样本的类别进行预测。

Xnew = [[…], […]]

ynew = model.predict_classes(Xnew)


  • 关于类别标签的注意事项

准备数据时,应该将其中的类别标签转换为整数表示(比如原始数据类别可能是一个字符串),这时候你就可能会用到sklearn中的LabelEncoder。

当然,在我们使用LabelEcoder中的函数inverse_transform()时,还可以将那些整数表示的类别标签转换回去。

因为这个原因,在拟合最终模型时,你可能想要保存用于编码y值的LabelEncoder结果。

概率预测

另外一种是对数据实例属于某一类的可能性进行预测。它被称为“概率预测”,当给定一个新的实例,模型返回该实例属于每一类的概率值。(0-1之间)

在Keras中,我们可以调用predict_proba()函数来实现。举个例子:

Xnew = [[…], […]]

ynew = model.predict_proba(Xnew)

在二分类问题下,Sigmoid激活函数常被用在输出层,预测概率是数据对象属于类别1的可能性,或者属于类别0的可能性(1-概率)

在多分类问题下,则是softmax激活函数常被用在输出层。数据对象属于每一个类别的概率作为一个向量返回。


回归预测

回归预测是一个监督学习问题,该模型学习一个给定输入样本到输出数值的映射。比如会输出0.1或0.2这样的数字。


首先,我们将为本教程创建一个回归数据集样本。

红线是y输出,其余的点是x输入的特征。

定义模型

接下来,我们将建立一个keras序列模型。

用Keras回归模型拟合 

我们将上述模型纳入Keras回归模型中,用x和y的数据拟合模型。然后,我们可以预测x数据。

最后,我们绘制结果。

我们检查一个平均平方误差率。


python在Keras中使用LSTM解决序列问题

阅读文章


最后,我们绘制结果。


随时关注您喜欢的主题


在本教程中,我们已经简单地学习了如何用Python中的Keras神经网络模型来拟合和预测回归数据。谢谢您的阅读!


可下载资源

关于作者

Kaizong Ye拓端研究室(TRL)的研究员。

本文借鉴了作者最近为《R语言数据分析挖掘必知必会 》课堂做的准备。

​非常感谢您阅读本文,如需帮助请联系我们!

 
QQ在线咨询
售前咨询热线
15121130882
售后咨询热线
0571-63341498